如何检测字符串是不是至少包含一个数字?
Posted
技术标签:
【中文标题】如何检测字符串是不是至少包含一个数字?【英文标题】:How to detect if a string contains at least a number?如何检测字符串是否至少包含一个数字? 【发布时间】:2010-04-01 07:32:33 【问题描述】:SQL server 2005中如何检测字符串是否至少包含一个数字(数字)?
【问题讨论】:
你的意思是一个子字符串,还是一个大于或等于指定值的数字? 【参考方案1】:使用这个:
SELECT * FROM Table WHERE Column LIKE '%[0-9]%'
MSDN - LIKE (Transact-SQL)
【讨论】:
我以为MSSQL中的方括号转义了,比如LIKE '[_]'
?也出于兴趣,您在哪里找到了这些信息?
不,这确实有效,我已经做了很多年了,不知道我第一次看到它是在哪里......
@CodeBlend 方括号用于在 outside 字符串时进行转义,在 inside 字符串时用于分隔模式。
这里解释了 LIKE 语句中的方括号。 msdn.microsoft.com/en-us/library/…
请注意,您必须使用如图所示的 [0-9] 而不是 Regex 简写 [\d] 来表示数字。为我工作 - 投票。【参考方案2】:
DECLARE @str AS VARCHAR(50)
SET @str = 'PONIES!!...pon1es!!...p0n1es!!'
IF PATINDEX('%[0-9]%', @str) > 0
PRINT 'YES, The string has numbers'
ELSE
PRINT 'NO, The string does not have numbers'
【讨论】:
为什么选择 PATINDEX,而不是简单的 LIKE?【参考方案3】:最简单的方法是使用LIKE
:
SELECT CASE WHEN 'FDAJLK' LIKE '%[0-9]%' THEN 'True' ELSE 'False' END; -- False
SELECT CASE WHEN 'FDAJ1K' LIKE '%[0-9]%' THEN 'True' ELSE 'False' END; -- True
【讨论】:
【参考方案4】:-
您可以使用基于 CLR 的 UDF 或使用搜索列上的所有数字执行 CONTAINS 查询。
【讨论】:
以上是关于如何检测字符串是不是至少包含一个数字?的主要内容,如果未能解决你的问题,请参考以下文章