Поиск записей с символами ПОМИМО указанных

euthanatos
Дата: 29.01.2013 09:45:55
Здравствуйте,

Есть необходимость проверить базу на наличие "левых" символов в определённых полях таблиц. Самих таблиц не так уж много.
Изучил тему http://www.sql.ru/forum/actualthread.aspx?tid=999370 но решения из неё не очень подходят. Требуется вывести те записи, которые, которые содержат любые символы, помимо перечисленных. Причем в некоторых случаях нужно указать вместо символа его шестнадцатиричный код. То есть я указываю символы пары-тройки алфавитов, кое-какие спецсимволы (скобки, кавычки и т.д.), коды тех символов, которые ввести с клавиатуры не могу и ожидаю что запрос вернет мне строки, в которых встречается то, чего я не указал прежде.

Вы можете мне помочь?
iap
Дата: 29.01.2013 09:54:36
euthanatos
нужно указать вместо символа его шестнадцатиричный код
LIKE N'%[^abcdtf'+NCHAR(<шестнадцатиричный код>)+N']%'
euthanatos
Дата: 29.01.2013 14:19:19
В теории все так, только на практике он должен такую каку ловить, а он этого не делает

Например:

DECLARE @t_1 table (name1 nvarchar(254))
INSERT	INTO @t_1
SELECT '"ШЫЄЫС ЌАЗАЌСТАН ОБЛЫСЫНЫЅ ҐЅІРЛІК МЕМЛЕКЕТТІК-ЖЕКЕ МЕНШІК ЈРІПТЕСТІК ОРТАЛЫЄЫ" АКЦИОНЕРЛІК ЌОЄАМЫ'

select			* 
from			@t_1

select			* 
from			@t_1 
where			(name1 not LIKE N'%[абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯqwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'+NCHAR(0x002D)+N']%')
Гость333
Дата: 29.01.2013 14:26:58
euthanatos
name1 not LIKE N'%[абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯqwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'+NCHAR(0x002D)+N']%'

Надо так:
name1 LIKE N'%[^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯqwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'+NCHAR(0x002D)+N']%'
petre
Дата: 29.01.2013 14:32:04
euthanatos,
А почему запрос должен "ловить" вышеуказанную строку?
Ведь в условии сказано, что выводить те строки иу которых нет "левых" символов.
Или условие немного не так сформулировано.
Искомая строка содержит символы, которые перечислены в условии, поэтому и не "ловится".
invm
Дата: 29.01.2013 14:32:55
euthanatos,

Потому что делать нужно как было написано. Еще раз внимательно посмотрите на ответ iap.
euthanatos
Дата: 29.01.2013 14:48:05
petre,
автор
Требуется вывести те записи, которые, которые содержат любые символы, помимо перечисленных.

То есть требовалось чтоб ловились строки с лишними символами

invm, да это многое объясняет. Но для человека лишь эпизодически сталкивающегося с T-SQL то весьма неочевидно.
euthanatos
Дата: 29.01.2013 14:52:25
В любом случае спасибо всем откликнувшимся ))