SQL Server中的单词匹配和替换

时间:2011-07-20 17:19:54

标签: sql-server

我必须对数据库中的字段应用单词更正。这些更正是缺少的法语口音。我有两个表,一个包含公司数据,一个公司名称字段可能缺少特定单词的一些重音,另一个表包含需要重音的已知单词集合。

ID   CompanyName                         ID   Word
------------------------------           ---------------------------
1    Jim Desormeaux Electrique            1   Désormeaux
2    Entreprises D Desormiers Inc.        2   Électrique 
                                          3   Désormiers 

我想创建一个查询,该查询将在第一个表中的公司名称中匹配单词,并将匹配的单词替换为第二个版本中的版本。像这样。

ID   CompanyName                    
------------------------------           
1    Jim Désormeaux Électrique            
2    Entreprises D Désormiers Inc.

现在,我知道我可以使用排序规则“Latin1_General_CI_AI”参数,以便带有重音符号的单词与不带重音符号的单词匹配。所以我可以做这样的事情。

UPDATE C
SET C.CompanyName = REPLACE(C.CompanyName, AWR.Word, AWR.Word) 
FROM Companies C
INNER JOIN AccentsWordRepository AWR ON C.ListingName LIKE '% ' + AWR.Word + ' %'
    OR C.ListingName LIKE '%' + AWR.Word + ' %'
    OR C.ListingName LIKE '% ' + AWR.Word + '%'

这里的问题是,这真的很慢,我想知道是否有更好的方法来做到这一点。

谢谢。

2 个答案:

答案 0 :(得分:0)

几年前我要提高处理大量字符串的存储过程的性能,通过将处理逻辑移植到部署到Sql Server的CLR程序集中获得的最佳结果,不确定它是否对您有帮助但是无论如何你可以尝试一下。

Here is我刚刚找到的一个例子,但你肯定可以自己搜索

答案 1 :(得分:0)

SQL Server全文搜索是否为您提供任何可能的解决方案?每个版本都在逐渐变得越来越好,它肯定必须提供一些东西。

http://msdn.microsoft.com/en-us/library/ms142547.aspx