1. /*
  2. declare @str1 varchar(200),@str2 varchar(200)
  3. set @str1=N'江西省南昌市其它区高新区火炬大道809号'
  4. set @str2=N'江西省南昌市其它区高新区火炬大道809号'
  5.  
  6. */
  7. ALTER FUNCTION [dbo].[F_strcompare](@str1 nVARCHAR(200),
  8. @str2 nVARCHAR(200))
  9. RETURNS numeric(3,2)
  10. AS
  11. BEGIN
  12. declare @returnvalue numeric(3,2)
  13. set @returnvalue=0
  14. if len(@str1)=0 or LEN(@str2)=0
  15. begin
  16. return @returnvalue
  17. end
  18.  
  19. /*完全相等与完全包含*/
  20. if @str1=@str2 or charindex(@str1,@str2)>0 or charindex(@str2,@str1)>0
  21. begin
  22. set @returnvalue= 1.0
  23. return @returnvalue
  24. end
  25.  
  26. DECLARE @len INT, --长度
  27. @min int,
  28. @pos INT, --累计符合个数
  29. @currindex int, --上次匹配位置
  30. @index int, --本次匹配位置
  31. @k INT,
  32. @ret numeric(3,1), --相似度
  33. @word nvarchar(200), --进行分解的字符串
  34. @strsource nvarchar(200) --长度较大的字符串
  35.  
  36. select @pos=0,@index=0,@currindex=0,@k=0
  37.  
  38. select @len =(
  39. case when LEN(@str1)>LEN(@str2)
  40. then LEN(@str1)
  41. else
  42. LEN(@str2)
  43. end
  44. ),
  45. @min=(
  46. case when LEN(@str1)>LEN(@str2)
  47. then LEN(@str2)
  48. else
  49. LEN(@str1)
  50. end
  51. )
  52. ,@word=(
  53. case when LEN(@str1)>LEN(@str2)
  54. then @str2
  55. else
  56. @str1
  57. end
  58. )
  59. ,@strsource=(
  60. case when LEN(@str1)>LEN(@str2)
  61. then @str1
  62. else
  63. @str2
  64. end
  65. )
  66.  
  67. while @k < @len-1
  68. begin
  69. select @index=charIndex(substring(@word,@k,1),@strsource)
  70. if @index > 0 and @index > @currindex
  71. begin
  72. set @pos = @pos+1
  73. set @currindex=@index
  74. --print @index
  75. end
  76. set @k=@k+1
  77. end
  78.  
  79. --SET @ret = (CAST(@pos * 100.0 / @k AS NUMERIC(3, 0)))
  80. SET @ret= (@pos * 1.0 / @min)
  81. return @ret
  82. End
  83. --select @ret,@k,@pos,@len,@min

  

SQL 比较中文字符串的更多相关文章

  1. sql server使用sql插入中文字符串乱码问题

    在插入语句前加N就行了 sb.Append(string.Format("update chapter set [content]=N'{0}' where Id ={1} ;", ...

  2. SQL Server 插入含有中文字符串出现乱码现象的解决办法

    ELECT  COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')       --查询SQLServer编码格式的语句 下面 ...

  3. SQL Server:字符串函数

    以下所有例子均Studnet表为例: 1. len():计算字符串长度 len()用来计算字符串的长度,每个中文汉字或英文字母都为一个长度 select sname, len(sname) from ...

  4. asp.net插入sql server 中文乱码问题解决方案

    创建数据库的代码---创建promary表 create table promary ( proID int primary key, proName varchar(50) not null ) 出 ...

  5. 关于TP3.2框架读取Sql server中文字段数据以及处理乱码的一些小心得

    最近要做一个项目,需要使用TP3.2框架,之前什么也不会,就硬着头皮上了,结果真的闹了挺多emmmmmm挺低级的错误,就像SQL Server中文字段的读取,一开始我是照着读取英文字段的格式来写的,在 ...

  6. php 获取中文长度 截取中文字符串

    #获取中文长度mb_strlen($str,$encoding); #截取中文字符串 mb_substr(str,start,length,encoding);

  7. Ajax回调函数返回的中文字符串乱码问题

    通过ajax提交请求,返回的response所带的中文字符串一直显示为乱码,写了如下代码也无效: response.setCharacterEncoding("UTF-8"); r ...

  8. 中文字符串转换为十六进制Unicode编码字符串

    package my.unicode; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Uni ...

  9. js jQuery中文字符串比较

    先说下普通字符串(英文)比较: 一般使用双等来判断(==),如果还需要类型相同那么就用三等(===) 1. 双等(==)是完全向后兼容的,如果两个操作数类型不一致,它会在某些时候自动对操作数进行类型转 ...

随机推荐

  1. ListView上下线添加

    <com.jclick.swipelistview.byzswipemenulistview.InScrollviewSwipeMenuListView android:id="@+i ...

  2. Linux下nginx生成日志自动切割

    1.编辑切割日志的 shell 程序,目录自定 #vi /data/nginx/cut_nginx_log.sh 输入代码: #!/bin/bash # This script run at 00:0 ...

  3. 第七十九,CSS3背景渐变效果

    CSS3背景渐变效果 学习要点: 1.线性渐变 2.径向渐变 本章主要探讨HTML5中CSS3背景渐变功能,主要有两种渐变方式:线性渐变和径向 (放射性)渐变. 一.线性渐变 linear-gradi ...

  4. Facebook 添加点赞按钮

    本来以为facebook文档里面会有那么一个简单的API,请求之后就可以对指定的页面点赞.但可能是出于防作弊方面的考虑,facebook只提供了自己官方的按钮 https://developers.f ...

  5. 2016年团体程序设计天梯赛-决赛 L1-6. 一帮一(15)

    “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组.本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中, ...

  6. c#.net 获取时间日期年月日时分秒格式

    今天写代码发现两个比较不错的分享下:1.DateTime.ParseExact很多时候我们获取的时间是数字形式表示的,好比20140127134015.927856,通过这个方法DateTime.Pa ...

  7. idea代码调试debug篇

    主要看图,看图一目了然. 断点的设定和eclipse一样,只要点一下就可以,下面是我设定的几个断点,再下面的三个窗口是用来调试代码的,这个和eclipse类似 调试常用的快捷键 F9          ...

  8. Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构

    storm集群里面工作机器分为两种一种是nimbus, 一种是supervisor, 他们通过zookeeper来进行交互,nimbus通过zookeeper来发布一些指令,supervisor去读z ...

  9. MaskEdit组件的EditText属性和Text属性

    MaskEdit组件主要是EditMask属性 是string属性. 掩码字符串EditMask属性分为3个部分,分别用分号隔开,形式是“XXXXX;X;X” 第一部分是掩码字符串的主要部分,它确定输 ...

  10. 关于ios 程序加载百度地图lib,出现链接错误:找不到符号 (null): _OBJC_CLASS_$_BMKMapManager的解决办法

    报告的错误信息 ld: warning: ignoring file /Users/5012/Documents/sphuang/IOS_project/baidu_map/ShareLocation ...