T-SQL字符串函数:对字符串执行“SOUNDEX”分析

日期: 2010-05-11 作者:Robert Sheldon翻译:冯昀晖 来源:TechTarget中国 英文

我们要讨论的最后一组字符串函数与“SOUNDEX”有关,它是一种可以把字符值转换成四个字符构成编码的系统,目的是确定类似发音的单词。“SOUNDEX”函数返回的第一个字符与目标字符串的第一个字符串相同,后面三个字符是对辅音求值得到的数值代码。(元音被忽略,除非元音是第一个字母。)   在下面的T-SQL语句中,我们用与“SOUNDEX”有关的函数来分析两个名字:   DECLARE @Name1 varchar(30)   SET @Name1 =   (SELECT LastName FROM Person.Person ……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

我们要讨论的最后一组字符串函数与“SOUNDEX”有关,它是一种可以把字符值转换成四个字符构成编码的系统,目的是确定类似发音的单词。“SOUNDEX”函数返回的第一个字符与目标字符串的第一个字符串相同,后面三个字符是对辅音求值得到的数值代码。(元音被忽略,除非元音是第一个字母。)

  在下面的T-SQL语句中,我们用与“SOUNDEX”有关的函数来分析两个名字:

  DECLARE @Name1 varchar(30)
  SET @Name1 =
  (SELECT LastName FROM Person.Person
  WHERE BusinessEntityID = 341)
  DECLARE @Name2 varchar(30)
  SET @Name2 =
  (SELECT LastName FROM Person.Person
  WHERE BusinessEntityID = 441)
  SELECT
  @Name1 AS Name1,
  @Name2 AS Name2,
  SOUNDEX(@name1)AS SoundexName1,
  SOUNDEX(@Name2) AS SoundexName2,
  DIFFERENCE(@Name1, @Name2) AS SoundexDiff

  “SET”子查询返回的名字是“Allen”和“Alan”,它们被插入到变量并在SELECT语句中使用,返回结果如下:

Name1Name2SoundexName1SoundexName2SoundexDiff
---------------------------------------------
AllenAlanA450A4504

  (1 row(s) affected)

  第一次使用“SOUNDEX”函数时,分析名字“Allen”;第二次分析名字“Alan”。要注意,该函数只有一个参数,就是待分析的字符串。在本例中,“SOUNDEX”分析两个拼写返回相同的结果,说明名字非常相似。这一点在用于识别某些名字拼写有两处不同的人时很方便。“DEFFERENCE”函数也有类似功能,它有两个参数,这两个参数就是待比较的字符串,返回结果是一个整数,表示两个字符串之间差异的程度。返回的整数结果可以是0到4之间的值。值0表示两个字符串之间几乎没有相似之处,而值4表示两个字符串非常相似。在上面的例子中,该函数返回4,因为两个名字非常相似。

  如果你想知道不太相似的两个名字运行时的结果,请运行下面的语句:

  DECLARE @Name3 varchar(30)
  SET @Name3 =
  (SELECT LastName FROM Person.Person
  WHERE BusinessEntityID = 1829)
  DECLARE @Name4 varchar(30)
  SET @Name4 =
  (SELECT LastName FROM Person.Person
  WHERE BusinessEntityID = 2580)
  SELECT
  @Name3 AS Name3,
  @Name4 AS Name4,
  SOUNDEX(@Name3)AS SoundexName3,
  SOUNDEX(@Name4) AS SoundexName4,
  DIFFERENCE(@Name3, @Name4) AS SoundexDiff

  在本例中,“SOUNDEX”函数对名字“Su”返回值“S000”,对名字“Suarez”返回值“S620”。此外,“DIFFERENCE”函数返回值3,结果如下表所示:

Name3Name4SoundexName3SoundexName4SoundexDiff
----------------------------------------------
SuSuarezS000S6203

  (1 row(s) affected)

  “SOUNDEX”函数和字符串处理函数为处理字符数据提供了极大的灵活性。尽管这些例子相对简单一些,我们可以利用这些函数创建更复杂的语句。一定要看看SQL Server联机手册获取更多相关信息。

相关推荐