坑人的SQLServer检测数字类型的函数ISNUMERIC

更新时间:2023-07-10 02:41:36 阅读: 评论:0

美丽山水坑⼈的SQLServer检测数字类型的函数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之外的字符)。
ca when PATINDEX('%[^0-9]%', 列名)=0 then cast (列名 as decimal(18,0))+cast(1 as decimal(18,0)) el ~~~ end as 起号

本文发布于:2023-07-10 02:41:36,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1075162.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类型   表达式   字符   数字   提出   问度
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图