Как настроить параметры сортировки, которые SQL Server будет использовать на время этого подключения?
Не знаю, пока я не подключусь к SQL Server, знаю, какое сопоставление я хочу использовать.
Напримерк веб-сайту подключен браузер с языком fr-IT
.Любые запросы, которые я запускаю по этому соединению, я хочу использовать для сопоставления французский язык, вариант Италии .
Я предполагаю свойство гипотетического уровня соединения, аналогично SET ANSI_NULLS OFF
, но для сопоставления 1 :
SET COLLATION_ORDER 'French_CI_AS'
SELECT TOP 100 FROM Orders
ORDER BY ProjectName
и более поздних
SELECT * FROM Orders
WHERE CustomerID = 3277
AND ProjectName LIKE '%l''ecole%'
и позже
UPDATE Quotes
SET IsCompleted = 1
WHERE QuoteName = 'Cour de l''école'
В то же время, когда китайский клиент подключается:
SET COLLATION_ORDER Chinese_PRC_CI_AI_KS_WS
SELECT TOP 100 FROM Orders
ORDER BY ProjectName
или
SELECT * FROM Orders
WHERE CustomerID = 3277
AND ProjectName LIKE '學校'
или
UPDATE Quotes
SET IsCompleted = 1
WHERE QuoteName = '學校的操場'
Теперь я могу изменить каждое SELECT
утверждение в системе, чтобы я мог передать сопоставление:
SELECT TOP 100 FROM Orders
WHERE CustomerID = 3278
ORDER BY ProjectName COLLATE French_CI_AS
Но вы не можетепередать порядок сопоставления в качестве параметра хранимой процедуре:
CREATE PROCEDURE dbo.GetCommonOrders
@CustomerID int, @CollationOrder varchar(50)
AS
SELECT TOP 100 FROM Orders
WHERE CustomerID = @CustomerID
ORDER BY ProjectName COLLATE @CollationOrder
И предложение COLLATE
не может помочь мне при выполнении UPDATE
или SELECT
.
Примечание: Все строковые столбцы в базе данных уже все nchar
, nvarchar
или ntext
.я не говорю о сопоставлении по умолчанию, применяемом к серверу, базе данных, таблице или столбцу для столбцов, отличных от Юникода (например, char
, varchar
, text
).я говорю о сопоставлении, используемом SQL Server при сравнении и сортировке строк.
Как мне указать per- соединение сопоставление?
См. также
1 гипотетический sql, который показывает проблемы локали