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

Откуда:
Сообщений: 266
Добрый день.
Код:
USE data
Go
SELECT TOP 20 * FROM Price WHERE id_price NOT IN (SELECT TOP 20 id_price FROM Price 
WHERE id_city='73041' 
AND id_group='1' 
AND id_subgroup IN ('392') 
AND name LIKE "%Д%" ORDER BY name ASC) 
AND id_city='73041' 
AND id_group='1' 
AND id_subgroup IN ('392') 
AND name LIKE '"%Д%"' ORDER BY name ASC


При выполнении получаю ошибку

Msg 207, Level 16, State 1, Line 5
Invalid column name '%S%'.


Подскажите почему выходит ошибка и как правильно написать?
9 дек 12, 09:41    [13602008]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL LIKE AND  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Amateur7
AND name LIKE "%Д%" ORDER BY name ASC) 
Двойные кавычки могут считаться указанием имени объекта, но никогда не ограничителем строки.
9 дек 12, 10:38    [13602045]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL LIKE AND  [new]
Amateur7
Member

Откуда:
Сообщений: 266
USE database
Go
SELECT TOP 20 * FROM Price WHERE id_price NOT IN (SELECT TOP 20 id_price FROM Price 
WHERE id_city='73041' 
AND id_group='1' 
AND id_subgroup IN ('392') 
AND name LIKE "%Д%" ORDER BY name ASC) 
AND id_city='73041' 
AND id_group='1' 
AND id_subgroup IN ('392') 
AND name LIKE "%Д%" ORDER BY name ASC


Msg 207, Level 16, State 1, Line 5
Invalid column name '%Д%'.
Msg 207, Level 16, State 1, Line 9
Invalid column name '%Д%'.


Все равно на ошибку попадаю...
9 дек 12, 11:09    [13602072]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL LIKE AND  [new]
Alexander Titkin
Member

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

Еще раз - замените свои двойные кавычки одинарными
9 дек 12, 11:22    [13602086]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL LIKE AND  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Amateur7,

Замените двойные кавычки на апострофы, то есть вместо
"%Д%"
напишите
'%Д%'

Даже подсветка синтаксиса на этом форуме намекает, что второй вариант является строкой, а первый — нет.
9 дек 12, 11:24    [13602090]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL LIKE AND  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Да, правильно.

Только сейчас проблема в другом, не срабатывает LIKE т.е. выводится пустой результат...

В чем может быть проблема?
Читал, что из-за русских символов LIke может не работать, правда ли это?
9 дек 12, 12:04    [13602129]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL LIKE AND  [new]
Amateur7
Member

Откуда:
Сообщений: 266
проверяю на Collation, получаю

Картинка с другого сайта.

В этом ли проблема и если в этом, как задать Collation для базы?
9 дек 12, 12:10    [13602140]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL LIKE AND  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Amateur7,

Раз у базы задана кириллическая сортировка, это не должно быть проблемой.

Что возвращает запрос
SELECT COUNT(*)
FROM Price 
WHERE id_city='73041' 
AND id_group='1' 
AND id_subgroup IN ('392') 
AND name LIKE '%Д%'
?
9 дек 12, 12:15    [13602148]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL LIKE AND  [new]
Amateur7
Member

Откуда:
Сообщений: 266
Получаю ону строку со значением 6, странно, но почему же тогда в предыдущем значении может быть пустой результат?
9 дек 12, 13:00    [13602235]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL LIKE AND  [new]
Amateur7
Member

Откуда:
Сообщений: 266
понял ошибку, спасибо.
я выборку делал из значений не входящих в первый селект, что разумеется будет 0.
9 дек 12, 13:11    [13602252]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить