У меня есть таблица MyTable(id INT, stringText varchar(max))
с более чем 2 миллионами записей. Я хотел бы написать запрос для анализа количества строк, которые имеют любой из следующих символов (сущности HTML) в тексте.
 
 

fi
fl
’
 
–
—
’
“
•
€
‚
ƒ
„
…
†
‡
ˆ
‰
Š
‹
Œ
Ž
‘
’
“
”
•
–
—
˜
™
š
›
œ
ž
Ÿ
¡
¢
£
¤
¥
¦
§
¨
©
ª
«
¬
®
¯
°
±
²
³
´
µ
¶
·
¸
¹
º
»
¼
½
¾
¿
À
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
à
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
Может ли кто-нибудь помочь мне написать эффективный WHERE CLAUSE
, чтобы узнать количество строк, пожалуйста?
Я пробовал что-то вроде ниже, но это не дает ожидаемых результатов.
DECLARE @testStr AS VARCHAR(MAX) = 'testing - quote chars and others '+ '"' + ' '+ ' ' + '' + '- testing'
DECLARE @temp TABLE (string VARCHAR(MAX));
INSERT INTO @temp(string) VALUES ('testing - plain text'), (@testStr), ('testing' + CHAR(1) + CHAR(2) + CHAR(3) + CHAR(4)+ ' testing 1-4'), ('sathish' + CHAR(1) + ' testing - char 1'), ('sathish' + CHAR(3) + CHAR(4)+ ' testing - char 3-4')
SELECT * FROM @temp WHERE string LIKE '%[' + CHAR(1) + CHAR(2) + CHAR(3) + CHAR(4) + ']%' /* this where clause works fine, i.e. only returns the rows with any of those characters*/
SELECT * FROM @temp WHERE string LIKE '%[' + '"' + ' ' + ' ' + '' + ']%' /* this where clause doesn't work as expected, it is returning all rows*/
Я предполагаю, что WHERE CLAUSE
в моем втором запросе SQL
не сработало, потому что в одинарных кавычках было более одного символа (что делает его строкой, а не символом).
Заранее спасибо.
Примечание: 1. Данные уже находятся в базе данных (пожалуйста, не спрашивайте, почему это не было обработано перед сохранением в базу данных), и я, к сожалению, не могу использовать функции SQL CLR.
- Я хотел бы избежать нескольких предложений OR, как показано ниже:
SELECT * FROM @temp WHERE string LIKE '%"' OR string LIKE '% %' OR string LIKE '% %' OR string LIKE '5%' -- and so on