时间:2021-07-01 10:21:17 帮助过:58人阅读
SELECT ,ISNUMERIC(‘-‘) as ‘-‘ --1 ,ISNUMERIC(‘+‘) as ‘+‘ --1 ,ISNUMERIC(‘$‘) as ‘$‘ --1 ,ISNUMERIC(‘.‘) as ‘.‘ --1 ,ISNUMERIC(‘,‘) as ‘,‘ --1 ,ISNUMERIC(‘\‘) as ‘\‘ --1 ,ISNUMERIC(‘2D3‘) AS ‘2D3‘--1 ,ISNUMERIC(‘1d1‘) AS ‘1d1‘--1 ,ISNUMERIC(‘1e1‘) AS ‘1e1‘--1 ,ISNUMERIC(‘d‘) AS ‘d‘ --0
当含有美元符、加减号、逗号等符号时,或者D、E的前后均出现数字时,也会返回1,这就比较头疼了。标点符号倒是好理解,为什么d,e这种情况,真是不理解微软设计的意图。
有什么好的解决办法吗?当然了,请看下面
方法:通配符。高逼格使用。
适用场景:2005及以上(2005之前的版本没试过,应该也支持)
--返回0-则为纯数字(支持正负数,小数点) SELECT PATINDEX(‘%[^0-9|.|-|+]%‘,‘2.2‘)--返回0 --返回0-则为纯整数 select PATINDEX(‘%[^0-9]%‘, ‘2.2‘) --返回 非0的位置
SQL server中patindexh和charindex函数,都可以在一段字符中搜索字符或字符串。
主要区别在:patindex函数支持使用通配符来进行搜索,charindex不支持通配符。
一、patindex函数
语法格式:patindex ( %pattern% , expression )
pattern:是要搜索的字符串
expression:是被搜索的字符串。
patindex函数返回字符或字符串在另一个字符串或表达式中的起始位置。
patindex函数支持搜索字符串中使用通配符,这也是patindexh和charindex函数主要的区别。
例:
patindex(%bc%,abcd) --返回:2
patindex(ab%,abcd) --返回:1
SQL中可以使用的通配符有:
1、%,替代一个或多个字符
2、_,仅替代一个字符
3、[charlist],字符列中的任何单一字符
4、[^charlist]或者[!charlist],不在字符列中的任何单一字符
二、charindex 函数
语法格式:charindex ( expression1 , expression2 [ , start_location ] )
expression1:是在expression2中寻找的字符
start_location:是charindex函数开始在expression2中找expression1的位置
charindex函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如charindex没有找到要找的字符串,那么函数整数0。
例:
charindex(sql, microsoft sql server) --返回:11
charindex(7.0, microsoft sql server 2000) --返回:0
SQLServer字符串查找(判断字符串是否含数字或字母)
标签:substring 搜索 返回 length server 设计 ros sof 字符