SQL Azure не возвращает результат

#azure-sql-database #azure-sql

Вопрос:

У меня есть простой запрос, как показано ниже

 select * from regulation where description = 'Regulation (EU) 2016'

select * from regulation where description like '%Regulation (EU)%'

select * from regulation where description like '%Regulation (E%'
 

Ни один из приведенных выше запросов не возвращает результат.

Однако, когда я это сделаю

     select * from regulation where description like '%Regulation%'
 

В результате мы возвращаемся в соответствии с Регламентом (ЕС) 2016 года

Я проверил, есть ли там пробел или какой-либо другой символ, но ничего нет. Тип описания в таблице (nvarchar(max),null)

Это довольно странно, я в замешательстве и никогда не видел такой проблемы. Сталкивался ли кто-нибудь с подобной проблемой ? Или я делаю что-то не так? Или это связано с настройками SQL Azure или кэшем, и мне нужно попросить администратора базы данных о повторной индексации?

Комментарии:

1. Вы проверили, какие символы указаны (EU) в результате? Возможно, это символы, отличные от ascii, которые выглядят как E и U, которые не соответствуют вашему запросу.

2. Как проверить, какие символы (ЕС)? имею в виду из таблицы ASCII? похоже, это какой-то жучок. Когда я пытаюсь обновить только (ЕС), используя запрос на обновление. Его обновление/отображение как (?U) -есть идеи, почему?

3. Может быть, в базе данных есть какой-то странный набор параметров сортировки. Если вы щелкнете по нему правой кнопкой мыши в SSMS, вы увидите его на вкладке «Общие». Обычно это было бы что-то вроде SQL_Latin1_General_CP1_CI_AS .

4. Вы можете попробовать принудительно выполнить сопоставление вашего запроса. WHERE [Column X] = [Column Y] COLLATE Latin1_General_CI_AS . Взято из sqlshack.com/…

5. Проверен. Вот коллекция : «SQL_Latin1_General_CP1_CI_AS» из свойств базы данных. И, уровень совместимости SQL Server 2017 (140)