用于查找仅包含特殊字符的行的SQL查询

时间:2010-06-03 16:47:59

标签: sql sql-server

我正在使用SQL Server 2005。

我只需找出“Body”列中有特殊字符的那些行。在以下方案中,结果应该只是TemplateID = 2的行。 我们如何为此编写查询?

CREATE TABLE #Template (TemplateID INT, Body VARCHAR(100))

INSERT INTO #Template (TemplateID,Body) VALUES (1,'abcd  1234')

INSERT INTO #Template (TemplateID,Body) VALUES (2,'#^!@')

除了以下内容之外的任何内容都是此方案的特殊字符

1) Alphabtes

2) Digits

3) Space

1 个答案:

答案 0 :(得分:30)

SELECT
    TemplateID,
    Body
FROM
    #Template
WHERE
    Body LIKE '%[^0-9a-zA-Z ]%'

括号内的东西表示数字(0-9),小写字母alpha(a-z),大写字母alpha(A-Z)和空格。 “^”使其成为“NOT”中的一个。请注意,这与NOT LIKE'%[0-9a-zA-Z]%'

不同