【发布时间】:2013-10-02 02:19:13
【问题描述】:
我的功能包括:
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 会使函数具有不确定性,因此我不能将其用作列中的计算持久值。
第一季度。是否有另一种(快速且简单)的方法来删除这样的重音,具有确定性功能?
第二季度。 (奖励问题)我做这个计算持久列的原因是搜索。例如,用户可以将客户的姓氏输入为“Gagne”或“Gagné”或“GAGNE”或“GAGNÉ”,应用程序将使用持久计算列找到它。有没有更好的方法来做到这一点?
编辑:使用 SQL Server 2012 和 SQL-Azure。
【问题讨论】:
-
如果有这个级别的问题,你最好在dba.stackexchange.com提问
-
也许这个链接对你有用,读起来就像在最后一段他正在处理你想要的东西youdidwhatwithtsql.com/comparing-accented-strings-with-tsql/849
-
Re Q2:考虑使用全文搜索并制作全文目录accent insensitive。
-
博士:感谢您的链接 - 很棒的 SQL 站点。 Keith:我的理解是你不能在 SQL Azure 中使用全文——最近有变化吗?
标签: tsql sql-server-2012 azure-sql-database non-deterministic