如何检测一个字符串是否包含特殊字符?

42

如何在SQL Server 2005中检测字符串是否包含特殊字符,例如#,$,^,&,*,@,!等(非字母数字字符)?


3
你认为什么是特别的 - Joey
3
每个字符都有其独特的特点。你需要更具体一些。 - Ignacio Vazquez-Abrams
1
好的,现在它变成了“›etc.‹是什么意思?” - Joey
你使用的是哪种SQL版本?SQL Server?mySQL?... - AdaTheDev
3个回答

63

假设使用SQL Server:

例如,如果您将特殊字符定义为任何非字母数字字符:

DECLARE @MyString VARCHAR(100)
SET @MyString = 'adgkjb$'

IF (@MyString LIKE '%[^a-zA-Z0-9]%')
    PRINT 'Contains "special" characters'
ELSE
    PRINT 'Does not contain "special" characters'

只需将不被视为特殊字符的其他字符添加到方括号内即可。


6
这个答案一开始让我感到困惑,因为它使用了 LIKE,但是方括号中的 ^ 字符实际上表示“不是”。 - Baodad
1
@AdaTheDev 在这种情况下,我们如何排除“-”作为特殊字符? - aaronmallen
@aaronmallen,要从特殊字符中排除破折号,请使用 IF (@MyString LIKE '%[^a-zA-Z0-9-]%') - Baodad
如何排除空格 - Mohit Shah
@aaronmallen 为了进一步解释Baodad的答案,方括号内具有特殊含义的字符可以作为要匹配的字符包含在某个不会应用这种特殊含义的地方。因此对于“-”符号,它应该被放在字符列表的开头或结尾。 - Stewart

19

一种方法是逐个检查每个特殊字符:

SELECT * FROM tableName
    WHERE columnName LIKE "%#%" OR columnName LIKE "%$%" OR (etc.)

很好,我使用了这段代码来简化我的问题。我一直在寻找这个 ádeclare @letra char(1) set @letra = 'á' SELECT col1 ,col2 ,col3 FROM table WHERE col1 LIKE '%' + @letra + '%' OR col2 LIKE '%' + @letra + '%' OR col3 like '%' + @letra + '%' - Bachask8

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接