当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2012-03-30 10:38:00  来源:本站整理

SQL Server difference函数的近似值操作[MSSQL防范]

赞助商链接



  本文“SQL Server difference函数的近似值操作[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  2.Delete A where exists (Select 1 A where a=1)

  斗胆产生在斗争中,勇气是在每天每天对艰苦的刚强抵当中产生的.我们青年的规语是斗胆、刚强、果断,就是撤销一切障碍.比来正在对SQL Server全部内置函数举行一个通参(呵呵,本身造的词,其实就是重新到尾过一遍),举行到difference函数的时刻简单的在IDE中举行了小小的查验查验,目标代码以下:

  全国无难事,唯刚毅二字,为成功之要诀.1 declare @input nvarchar(100)=""shenme""2 declare @targetItem nvarchar(100)=""ShenMa珍藏""3 DIFFERENCE(@input,@targetItem)as result

  返回值以下:

  result-----------4(1 行受影响)

  返回值为4,注解用户输入的值与举行斗劲的值是完好匹配的,但事实并非如许""shenme""和""ShenMa珍藏社区""明显是不一样的,只不过有几分近似罢了,好,SQL Server中的近似值操作,就是我在这里要记录的(这句话换做大牛的说法是:好,这就是我们本节要讲的).

  difference返回值介绍:返回的整数是 SOUNDEX 值中近似字符的个数.返回的值从 0 到 4 不等:0 默示几近不合或完好不合,4 默示几近近似或完好近似.

  起首必要疏解白的是,我要记录的是近似值操作,而并非近似四舍五入的操作:ROUND函数,他的感导是返回一个数值,舍入到指定的长度或精度.而我们这里要评论辩说的是: DIFFERENCE函数.

  DIFFERENCE 返回一个整数值,指导两个字符表达式的 SOUNDEX 值之间的差别.

  什么是SOUNDEX值?

  SOUNDEX是一种语音算法,操纵英文字的读音策画近似值,值由四个字符构成,第一个字符为英文字母,后三个为数字.在拼音文字中有时会有会念但不克不及拼出精确字的气象,可用Soundex做近似模糊匹配的后果.比方Knuth和Kant二个字符串,它们的Soundex值都是「K530」.

  算法扼要申明:

  将英文字按以下法则改换(不该用第一个字符举行匹配):

  a e h i o u w y -> 0 b f p v -> 1 c g j k q s x z -> 2 d t -> 3 l -> 4 m n -> 5 r -> 6

  去除0,关于反复的字符只保存一个

  返回前4个字符,不足4位以0补足

  以Knuth和Kant为例:

  Knuth -> K5030 -> K53 -> K530Kant -> K053 -> K53 -> K530

  不知道大师看熟习探询了没有,我来简单说一下,比方目标字符串是Knuth,我们不该用第一个字符举行匹配,也就是不该用k,而将k作为匹配成果的第一个字符,所以第一个字符就得到了,他就是k,然后利用第二个字符举行匹配:n,n在以上匹配表中处于的地位是第六行,对应后边的数字为5,所以第二个匹配的字符也找到了,更新目前的成果字符串,就是k5,然后连络去除0,反复字符只保存一个等其他法则以此类推,就得到了最后的成果.

  有人会问,这个difference函数有什么用,我要匹配近似成果的时刻用like不就行了,是的,我们可以用like,然则试想一下如许的气象,我们在 web利用法度的搜索栏中输入了“比较”两个字,搜索一下,创造成果为0,而数据库中却有一条名为:“比对“的记录,并且他们长的竟然那么像,所以实际气象中,我们是如许的数据可以大概被检索出来,以供用户浏览或处理惩罚的,所以这就是你常常利用的like关键字,我们可以复制一下代码,在 MSSQLSERVER的IDE中运行一下,查算作果是不是跟我的实施成果一样.

  declare @item1 nvarchar(20)=""比较""declare @item2 nvarchar(20)=""比对""create table #tblTemp(item nvarchar(20)) into #tblTemp @item2 * #tblTemp --显示姑且表数据 * #tblTemp where item like ""+""+@item1+""+""drop table #tblTemp --注:姑且表删除

  实施上述代码,返回成果为:

SQL Server difference函数的近似值操作

  很明显,查找成果为空.

  然则若是我们利用difference关键字,成果大概就不一样了,实施一下代码:

  declare @item1 nvarchar(20)=""比较""declare @item2 nvarchar(20)=""比对"" SOUNDEX(@item1) item1,SOUNDEX(@item2) item2,DIFFERENCE(@item1,@item2) result

  返回成果为:

SQL Server difference函数的近似值操作

  上方我们说过,返回值为4,注解举行斗劲的两个字符串完好一样,我们细心看一下他们的SOUNDEX值便可以了,都是0000,如许的话,近似上述气象的数据我们便可以检索出来,这种功效有时刻是非常有效的.

  关于diffrence函数的实际利用气象,我还在摸索当中,记得从前看过一本书(仅仅是看过书名,连翻都没翻过)叫《本身下手写搜索引擎》,是不是用的搜索算法也跟这个有点近似呢,谷歌什么算法不知道,好像百度是买的香港某大学的一个搜索算法,总之功效是匹配用户输入的数据并做近似度匹配,所以我的标题中有一项目组叫:搜索引擎算法的胡乱猜想,呵呵,若是你有更好的见解,无妨奉告我啊,别的,大虾们看到之后请轻喷哈.


  以上是“SQL Server difference函数的近似值操作[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • sqlserver索引的原理及索引成立的注意事项小结
  • SQL Join的一些总结(实例)
  • SQL的Join利用图解教程
  • SQL中JOIN和UNION辨别、用法及示例介绍
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .