正则表达式,用于验证数据是否包含数字(或空是有效的)

时间:2010-03-31 07:11:52

标签: sql regex validation

我必须验证数据是否包含数字,如果它不是数字返回0,如果它是数字或空返回1。

以下是我在SQL中尝试的查询。

SELECT dbo.Regex('^[0-9]','123') - 返回1.

SELECT dbo.Regex('^[0-9]','') - 这不是返回1,但我想返回1,我试图在“模式”中放置空格也不起作用...

请任何人帮忙......

提前致谢

3 个答案:

答案 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')