我必须验证数据是否包含数字,如果它不是数字返回0,如果它是数字或空返回1。
以下是我在SQL中尝试的查询。
SELECT dbo.Regex('^[0-9]','123')
- 返回1.
SELECT dbo.Regex('^[0-9]','')
- 这不是返回1,但我想返回1,我试图在“模式”中放置空格也不起作用...
请任何人帮忙......
提前致谢
答案 0 :(得分:4)
尝试:
SELECT dbo.Regex('^[0-9]*$','123')
或更好:
SELECT dbo.Regex('^\d*$','123')
\d
是[0-9]
的标准简写。请注意,当您使用[0-9]
时,它表示“只匹配一位数。*
通配符表示匹配零或更多,因此\d*
表示匹配零个或多个数字,其中包含空结果。< / p>
答案 1 :(得分:3)
你的正则表达式不太正确:"^[0-9]"
只检查字符串中的第一个字符是否为数字。你的正则表达式将在“3abcde”上返回1
。
使用
"^\d*$"
检查字段是否仅包含数字(或不包含任何数字)。如果要允许空格,请使用
"^\s*\d*\s*$"
如果您想允许标志和小数,请尝试
"^\s*(+|-)?\d*\.?\d*\s*$"
答案 2 :(得分:0)
尝试^[0-9]*$
,它只匹配0位或更多位数:
SELECT dbo.Regex('^[0-9]*$','')
应该返回1,应该......
SELECT dbo.Regex('^[0-9]*$','123')