Задать вопрос
@mletov

Почему не работает LIKE при поиске в бд?

Пожалуйста, подскажите:
Досталась в наследство программа с базой на MSSQL. Но что-то мой предшественник намутил с кодировкой и выбрать по полю через LIKE или по жесткому сравнению не выходит.

В MSSQLMS все отображается нормально, не кракозябрами
Самое странное, что иногда находится запись, не содержащая искомого выражения.

COLLATION базы: SQL_Latin1_General_CP1_CI_AS
COLLATION сервера: Cyrillic_General_CI_AS (подозреваю, как раз из-за несовпадения с collation базы)
COLLATION для поля, по которому выбираю: database default

Пробовал
SELECT *
FROM table
WHERE  comment LIKE '%к%'


SELECT *
FROM table
WHERE  comment LIKE '%к%' COLLATE SQL_Latin1_General_CP1_CI_AS


SELECT *
FROM table
WHERE  comment LIKE '%к%' COLLATE Cyrillic_General_CI_AS
  • Вопрос задан
  • 2600 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
AndyKorg
@AndyKorg
Кнопконажиматель и припоерасплавлятель
Про Collate можно прочитать тут.
Предположив, что у вас буква "к" русская и в таблице есть строки с такой буквой остается грешить только на настройку кодовой страницы клиента.
Ответ написан
Комментировать
@ViaCom
SELECT *
FROM table
WHERE  comment COLLATE Cyrillic_General_CI_AS
 LIKE '%к%' COLLATE Cyrillic_General_CI_AS

все поля приведите к одному коллейту
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы