Reputation: 375
I am working with SQL Server 2005.
I need to find out only those rows for which there is a special character in “Body” column. In the following scenario, the result should be only the row with TemplateID = 2. How do we write the query for this?
CREATE TABLE #Template (TemplateID INT, Body VARCHAR(100))
INSERT INTO #Template (TemplateID,Body) VALUES (1,'abcd 1234')
INSERT INTO #Template (TemplateID,Body) VALUES (2,'#^!@')
Anything other than the following is a special character for this scenario
1) Alphabtes
2) Digits
3) Space
Upvotes: 9
Views: 90159
Reputation: 47444
SELECT
TemplateID,
Body
FROM
#Template
WHERE
Body LIKE '%[^0-9a-zA-Z ]%'
The stuff between the brackets says numbers (0-9), lowercase alphas (a-z), uppercase alphas (A-Z) and the space. The "^" makes that a "NOT" one of these things. Note that this is different though than NOT LIKE '%[0-9a-zA-Z ]%'
Upvotes: 36