На основе определения из Википедии: https://en.wikipedia.org/wiki/Collation
Алгоритм сопоставления, такой как алгоритм сопоставления Unicode, определяет порядок в процессе сравнения двух заданных строк символов и принятия решения, которое должно предшествоватьДругой.Когда порядок определен таким образом, алгоритм сортировки может быть использован для размещения списка любого количества элементов в этом порядке.
Когда вы ссылаетесь на символ, этот SQL Server неЕсли у вас есть сценарий, то SQL Server будет обрабатывать его как символ ?
, поэтому вы увидите, что оба символа ?
и ?
одинаковы, поскольку оба они обрабатываются как ?
.Чтобы избежать такого поведения, вам нужно настроить подходящее сопоставление для вашей базы данных или столбца таблицы или строкового литерала.
Так что, как написал @Hiran (https://stackoverflow.com/a/56220111/1666800), вам нужно будет настроить подходящее сопоставление.
Подробнее о сопоставлении в SQL Server: https://docs.microsoft.com/en-us/sql/t-sql/statements/collations?view=sql-server-2017
Вот несколько кодов, которые помогут вам настроить параметры сортировки:
Установить параметры сортировки в базе данных:
ALTER DATABASE <Database>
COLLATE <Your Collation> ;
GO
Установить сопоставление для столбца таблицы:
USE <Database>
GO
ALTER TABLE <Table Nme>
ALTER COLUMN <Column Name> <Data Type>
COLLATE <Your Collation> <Other options>
GO
Установить сопоставление для строкового литерала:
SELECT N'?' COLLATE <Your Collation>