sqlserver判断字符串是否是纯数字
有的时候我们可能会需要去判断数据库中一个字符串类型的字段是否是存的纯数字,通常来说解决思路是先去找数据库引擎提供的内置函数是否有能够满足需求的,没有再另觅他法。
在sqlserver引擎中,自sqlserver2005起提供了一个isnumeric(expression)函数用于判断字符串是否为纯数字:当expression为数字时,返回1,否则返回0。
但是实际使用上却会存在偏差:
select isnumeric('123.456') as '123.456' -- 1 , isnumeric('-') as '-' -- 1 , isnumeric('+') as '+' -- 1 , isnumeric('$') as '$' -- 1 , isnumeric('.') as '.' -- 1 , isnumeric(',') as ',' -- 1 , isnumeric('') as '' -- 1 , isnumeric('1D1') AS '1D1' -- 1 , isnumeric('1E1') AS '1E1' -- 1 , isnumeric('1d1') AS '1d1' -- 1 , isnumeric('1e1') AS '1e1' -- 1 , isnumeric('d') AS 'd' -- 0 , isnumeric('e') AS 'e' -- 0
具体是,当字符串中含有美元符、加减号、逗号等符号时,或者在D、E的前后均出现数字时,也会返回1,而微软这样设计的原因成谜。
因此我们只能另觅他法,推荐使用patindex( '%pattern%', expression)检索函数配合正则表达式做判断:
select patindex('%[^0-9|.|-]%', '-1232.456'); -- 0 select patindex('%[^0-9|.|-]%', 'yanggb666'); -- 1
这样,当判断的结果为0的时候,字符串就是纯数字,可以用强制类型转换为数字类型;当判断结果不为0的时候,就能知道字符串不是纯数字了。
"那一天我二十一岁,在我一生的黄金时代,我有好多奢望:我想爱,想吃,还想在一瞬间变成天上半明半暗的云。后来我才知道,生活就是个缓慢受锤的过程:人一天天老下去,奢望也一天天消失。"
推荐这些文章:
使用isnumeric()函数。
示例1: isnumeric(22)
返回:1
示例2:isnumeric('22')
返回:0
...
有的时候我们可能会需要去判断数据库中一个字符串类型的字段是否是存的纯数字,通常来说解决思路是先去找数据库引擎提供的内置函数是否有能够满足需求的,没有再另觅他法。
在sqlserver引擎中,自sqlserver2005起提供了一个isnumeric(expression)函数用于判断字符串是否为纯数字:当expression为数字时,返回1,否则返回0。
但是实际使用上却会存在偏差:
select isnumeric('123.456') as '123.456' -- 1
, isnumeric('-') as '-' -- 1
, isnum...
问题
帮帮忙啊,呵呵
最佳回答
declare @str varchar(100),@tmp varchar(101),@i int
set @str= 'sddfd123fddfd56fddf78 '
set @tmp=@str+ 'a '
while patindex( '%[0-9]% ',@tmp)> 0
begin
set @i=1
while 1=1
begin
if isnumeric(substring(@tmp,patindex( '...
isidentifier():是否是合法标识符
isspace():是否全部由空白字符组成(回车、换行、水平制表符)
isalpha():是否全部由字母组成
isdecimal():是否全部由阿拉伯数字组成
isnumeric():是否全部由数字组成
isalnum():是否全部由字母和数字组成
1 s = 'hello,Python'
2 print('1.', s.isidentifier())
3 print('2.', 'hello'.isidentifier())
4 print('3.', '张三_'.isidentifier())
5 print('4.', '张三...
--创建函数
CREATE FUNCTION [dbo].[GET_NUMBER] (@S VARCHAR(100))RETURNS VARCHAR(100)ASBEGIN WHILE PATINDEX('%[^0-9\\.\\^0-9]%', @S) > 0 BEGIN SET @S = STUFF(@S, PATINDEX('%[^0-9\\.\\^0-9]%', @S), 1, ''); END; &nb...
问题
例:select a from tbl 结果 a 1,2,3 4,5 6需要的返回结果: 1,2,3,4,5,6请问这个sql怎么写?
最佳回答
SELECT
STUFF(( SELECT ',' + a
FROM tbl
FOR
XML PATH('')
), 1, 1, '')
...
文章链接:https://www.dianjilingqu.com/3555.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。