У меня есть функция, которая включает в себя:
SELECT @pString = CAST(@pString AS VARCHAR(255)) COLLATE SQL_Latin1_General_Cp1251_CS_AS
Это полезно, например, для удаления акцентов во французском языке; Например:
UPPER(CAST('Éléctricité' AS VARCHAR(255)) COLLATE SQL_Latin1_General_Cp1251_CS_AS)
дает ELECTRICITE
.
Но использование COLLATE
делает функцию недетерминированной, и поэтому я не могу использовать ее как вычисляемое постоянное значение в столбце.
Q1. Есть ли другой (быстрый и простой) способ удалить подобные акценты с помощью детерминированной функции?
Q2. (Дополнительный вопрос) Причина, по которой я делаю этот вычисляемый постоянный столбец, заключается в поиске. Например, пользователь может ввести фамилию клиента как «Гагне», «Гагне», «Гагне» или «Гагне», и приложение найдет ее, используя сохраненный вычисляемый столбец. Есть лучший способ это сделать?
РЕДАКТИРОВАТЬ: Использование SQL Server 2012 и SQL-Azure.