SQL Сервер игнорирует символ геля - PullRequest
3 голосов
/ 29 мая 2020

Почему Сервер игнорирует символ ₾?

Почему это:

print iif(N'₾' = N'', 'true', 'false')

совпадает с:

print iif(N'₾2' = N'2', 'true', 'false')

Какую роль играет в этом сопоставление ситуация и что творится под капотом?

1 Ответ

0 голосов
/ 30 мая 2020

Мне кажется, что это проблема, связанная с версией Unicode, когда был введен символ, и типом SQL серверной сортировки, которая используется:

  • Символ € был введен в Unicode 2.1, и он возвращает false во всех сопоставлениях
  • Символ ₭ был введен в Unicode 3.0, и он возвращает false в старых сопоставлениях (например, Latin1_General_CI_AS), но возвращает true в сопоставлениях введено в SQL Server 2008 (например, Latin1_General_100_CI_AS)
  • Символ ẞ был введен в Unicode 5.1 и возвращает true в большинстве сопоставлений, но возвращает false в сопоставлениях, представленных в SQL Server 2017 (например, Japanese_Bushu_Kakusu_140_CI_AS_VSS)
  • Символ ₸ был введен в Unicode 5.2 и возвращает true во всех сопоставлениях (кроме сопоставлений BIN)
  • Символ ₾ был введен в Unicode 8.0 и он возвращает true во всех сопоставлениях (кроме сопоставлений BIN)
...