Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Поиск записей с символами ПОМИМО указанных  [new]
euthanatos
Member

Откуда:
Сообщений: 33
Здравствуйте,

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

Вы можете мне помочь?
29 янв 13, 09:45    [13842696]     Ответить | Цитировать Сообщить модератору
 Re: Поиск записей с символами ПОМИМО указанных  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
euthanatos
нужно указать вместо символа его шестнадцатиричный код
LIKE N'%[^abcdtf'+NCHAR(<шестнадцатиричный код>)+N']%'
29 янв 13, 09:54    [13842750]     Ответить | Цитировать Сообщить модератору
 Re: Поиск записей с символами ПОМИМО указанных  [new]
euthanatos
Member

Откуда:
Сообщений: 33
В теории все так, только на практике он должен такую каку ловить, а он этого не делает

Например:

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']%')
29 янв 13, 14:19    [13844427]     Ответить | Цитировать Сообщить модератору
 Re: Поиск записей с символами ПОМИМО указанных  [new]
Гость333
Member

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

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

Откуда: Кривой Рог
Сообщений: 42
euthanatos,
А почему запрос должен "ловить" вышеуказанную строку?
Ведь в условии сказано, что выводить те строки иу которых нет "левых" символов.
Или условие немного не так сформулировано.
Искомая строка содержит символы, которые перечислены в условии, поэтому и не "ловится".
29 янв 13, 14:32    [13844552]     Ответить | Цитировать Сообщить модератору
 Re: Поиск записей с символами ПОМИМО указанных  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
euthanatos,

Потому что делать нужно как было написано. Еще раз внимательно посмотрите на ответ iap.
29 янв 13, 14:32    [13844563]     Ответить | Цитировать Сообщить модератору
 Re: Поиск записей с символами ПОМИМО указанных  [new]
euthanatos
Member

Откуда:
Сообщений: 33
petre,
автор
Требуется вывести те записи, которые, которые содержат любые символы, помимо перечисленных.

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

invm, да это многое объясняет. Но для человека лишь эпизодически сталкивающегося с T-SQL то весьма неочевидно.
29 янв 13, 14:48    [13844712]     Ответить | Цитировать Сообщить модератору
 Re: Поиск записей с символами ПОМИМО указанных  [new]
euthanatos
Member

Откуда:
Сообщений: 33
В любом случае спасибо всем откликнувшимся ))
29 янв 13, 14:52    [13844752]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить