Я работаю с 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
SELECT
TemplateID,
Body
FROM
#Template
WHERE
Body LIKE '%[^0-9a-zA-Z ]%'
В скобках указаны числа (0-9), буквы в нижнем регистре (a-z), буквы в верхнем регистре (A-Z) и пробел. "^" Делает это "НЕ" одной из этих вещей. Обратите внимание, что это отличается от NOT LIKE '% [0-9a-zA-Z]%'