#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)