Имам таблица 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 функции.
- Бих искал да избегна множество клаузи ИЛИ нещо като по-долу:
SELECT * FROM @temp WHERE string LIKE '%"' OR string LIKE '% %' OR string LIKE '% %' OR string LIKE '5%' -- and so on