`

坑人的SQL Server检测数字类型的函数ISNUMERIC

 
阅读更多

前几天,遇到一个十分棘手的问题,有同事提出在是字符类型的列中进行起止号计算,大体是这样的

新起号=上一条止号+1

新止号=新起号+数量

而在这一列的数据是这样的

库存

CN003?005007

000890670000

98111100 库存

370111900000

001,800,900,00

~~~~~~~~~~~~

木办法,问度娘吧,发现还是高人多啊,提出用ISNUMERIC(列名)=1,就是数字类型的,但是请看一下ISNUMERIC的说明文档

ISNUMERIC

 

语法

ISNUMERIC ( expression )

参数
expression
要计算的表达式。

返回类型
int

备注
当输入表达式的计算结果为有效的 numeric 数据类型时,ISNUMERIC 返回 1;否则返回 0。有效的 numeric 数据类型包括以下类型:int,numeric,bigint,money,smallint,smallmoney,

tinyint,float,decimal,real

 

注意:
对于不是数字的字符(如加号 (+)、减号 (-))和有效货币符号(如美元符号 ($))字符,ISNUMERIC 将返回 1。返回值为 1 确保可以将expression转换为上述数字类型中的一种。但是此函数存在Bug,当判断的表达式是字符类型的表达式时,就乱了!'001,800,900'同样会认为是数字类型

可以替代的写法是

PATINDEX('%[^0-9]%', 列名)

如果返回值等于0,则是纯数字型(没有0~9之外的字符)。

case when PATINDEX('%[^0-9]%', 列名)=0 then cast (列名 as decimal(18,0))+cast(1 as decimal(18,0))
else ~~~ end as 起号

 

 

分享到:
评论

相关推荐

    sql server 函数及用法全解

    在SQL Server中,函数是进行数据处理和分析的关键元素。本文将全面解析SQL Server中的各种函数及其用法,帮助你提升数据库操作技能。 一、聚合函数 SQL Server中的聚合函数用于对一组值进行计算,返回单个值。常见...

    postgresql中判断是否为数字和是否为时间日期格式的相关函数

    postgresql中判断是否为数字和是否为时间日期格式的相关函数,类似于sqlserver中的isDate和isnumeric函数

    SQL Server7.0数据库导入数据时出现的符号问题及其解决方法.pdf

    作者使用 ISNUMERIC() 函数来判断字符是否为数字类型,但是发现该函数存在一些问题,例如认为 “.” 是数字类型。作者尝试使用 CONVERT() 函数来转换字符类型,但是发现了许多 vấn đề。 为了解决这些问题,作者...

    sql server 性能优化(生产中常用)

    ISNUMERIC是一个重要的系统函数,它用于检查一个表达式是否为数字类型。在数据类型转换和数据验证场景中,合理使用ISNUMERIC可以避免错误和性能下降。 20. 自定义及系统错误处理 在存储过程和触发器中合理地处理...

    SQL Server中检查字段的值是否为数字的方法

    在SQL Server中,当我们需要对数据库中的某个字段进行数据验证,特别是判断其是否包含数字时,可以使用内置的`ISNUMERIC`函数。这个函数的主要作用是检查提供的表达式是否可以解析为有效的数字类型,包括整数、...

    SQL15位和18位公民身份证校验函数

    为此,设计了一款专门用于校验15位与18位公民身份证号码合法性的SQL函数。 #### 二、身份证号码结构分析 根据中国公民身份证号码的标准,我们可以将身份证号码分为以下几部分: - **15位身份证号码**:由[6位地区码...

    《SQLServer2005数据库》考试试卷

    9. ISNUMERIC函数检查一个表达式是否可以被解释为数值类型,如选项C所示。 10. 查询语句中最基本的关键字是SELECT和FROM,如选项B所示。 11. ASC关键字用于排序结果集,使数据按升序排列。 12. DISTINCT关键字...

    isnumeric检测是否为数字类型的asp代码

    除了直接使用IsNumeric() 函数之外,我们还可以编写自定义函数来检测数字类型。例如,在给定的代码片段中,存在一个名为JCID的函数,它的作用是检查一个值是否为数字类型,并返回相应的数字值或0: ```asp Function...

    案例预防SQL注入漏洞函数

    接着,作者使用了`IsNumeric`函数来判断输入是否为数字,如果输入的是数字,则执行SQL查询,否则给出错误提示。这种方法可以防止某些利用非数字字符构造的SQL注入攻击,但仍然不足以防御所有类型的SQL注入。 最后,...

    sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日期

    在SQL Server中,公用表表达式(Common Table Expression,简称CTE)是一种非常有用的查询构造,它可以临时定义一个结果集,然后在后续的查询中重复使用。CTE的一个强大特性是支持递归,这意味着它可以在自身的基础...

    Functions in SQL Server Practical Guide.pdf

    ### SQL Server内置函数实用指南 #### 1. SQL Server中的函数简介 SQL Server提供了一系列的内置函数,可以用来处理数据并返回特定的值。这些函数可以分为几个主要类别:字符串函数、数值函数、日期/时间函数以及...

    delphi中如何判断是不是数字

    Delphi提供了一系列的`TryStrToXXX`函数,如`TryStrToInt`, `TryStrToFloat`等,它们尝试将字符串转换为相应的数值类型。如果转换成功,这些函数会返回`True`并赋值给目标变量;如果失败,返回`False`。例如: ```...

    SQL Server 触发器 表的特定字段更新时,触发Update触发器

    SQL Server提供了多种日期和时间数据类型,如`DATE`、`TIME`、`DATETIME2`等,以及各种函数和运算符来处理日期和时间数据。 2. `SQL Server`和`sql数据库`标签表明这是一个关于SQL Server数据库管理系统的问题。SQL...

    SQLServer2005数据库考试试卷

    ISNUMERIC()用于检测给定的表达式是否为数值型。 - D:ISINT()不是标准SQL函数。 10. **查询语句中至少包含的关键字是:** - **选项分析:** - A:正确。SELECT和FROM是最基本的两个关键字,用于指定查询的列和...

    一个可重用的VC++字符串处理函数集 IsNumeric——检查串是否为数字串 Upcase——变成大写串 right——从右到左截掉字符 Trim——截掉串尾的空格 空格 mid——截掉从某个起始位置到右边位置的字符

     IsNumeric——检查串是否为数字串  Upcase——变成大写串  right——从右到左截掉字符  Lowercase——变成小写串  Trim——截掉串尾的空格  RTrim——截掉串开始处的空格  LTrim——截掉串尾的空格 ...

    SQL 字符处理

    - `ISNUMERIC(remarks)`:这是一个 SQL Server 的内置函数,用于判断一个字符串是否全部由数字组成。 #### 3. 理解 `ISNUMERIC()` 函数 `ISNUMERIC()` 函数用于检测输入的表达式是否为有效的数值型字符串。如果...

    python判断数字的函数.docx

    Python中的数字判断函数是编程中常用的操作,它们帮助开发者确定变量的类型或数值特性。以下是对这些函数和方法的详细解释: 1. **type()** 函数:此函数用于获取对象的类型。在数字判断中,它能识别变量是整型...

Global site tag (gtag.js) - Google Analytics