SQL 正则表达式验证数据是否包含数字(或空也有效)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2551053/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Regular expression to validate whether the data contains numeric ( or empty is also valid)
提问by VInayK
i have to validate the data contains numeric or not and if it is not numeric return 0 and if it is numeric or empty return 1.
我必须验证数据是否包含数字,如果它不是数字返回 0,如果它是数字或空返回 1。
Below is my query i tried in SQL.
下面是我在 SQL 中尝试的查询。
SELECT dbo.Regex('^[0-9]','123')
-- This is returning 1.
SELECT dbo.Regex('^[0-9]','123')
-- 这是返回 1。
SELECT dbo.Regex('^[0-9]','')
-- this is not returning 1 but i want to return as 1 and i try to put space in "pattern" also it is not working...
SELECT dbo.Regex('^[0-9]','')
-- 这不是返回 1 但我想返回为 1 并且我尝试在“模式”中放置空间它也不起作用...
please can any one help....
请任何人可以帮助....
Thanks in advance
提前致谢
回答by cletus
Try:
尝试:
SELECT dbo.Regex('^[0-9]*$','123')
or better yet:
或者更好:
SELECT dbo.Regex('^\d*$','123')
\d
is standard shorthand for [0-9]
. Note that when you use [0-9]
it means "match exactly one digit. The *
wildcard means match zero or more so \d*
means match zero or more digits, which includes an empty result.
\d
是 的标准简写[0-9]
。请注意,当您使用[0-9]
它时,它表示“仅匹配一位数字。*
通配符表示匹配零个或多个,因此\d*
表示匹配零个或多个数字,其中包括空结果。
回答by Jens
Your Regex is not quite right: "^[0-9]"
checks only, if the first character in the string is a number. Your regex would return 1
on "3abcde".
您的正则表达式不太正确:"^[0-9]"
仅检查字符串中的第一个字符是否为数字。您的正则表达式将返回1
“3abcde”。
Use
用
"^\d*$"
to check if the field contains only numbers (or nothing). If you want to allow whitespace, use
检查该字段是否仅包含数字(或不包含任何内容)。如果要允许空格,请使用
"^\s*\d*\s*$"
If you want to allow signs and decimals, try
如果您想允许符号和小数,请尝试
"^\s*(+|-)?\d*\.?\d*\s*$"
回答by Amber
Try ^[0-9]*$
, which will match 0 or more digits only:
Try ^[0-9]*$
,它将仅匹配 0 个或多个数字:
SELECT dbo.Regex('^[0-9]*$','')
should return 1, as should...
应该返回 1,应该......
SELECT dbo.Regex('^[0-9]*$','123')