这篇文章主要讲解了“SQL Server提取数字、英文以及中文的sql语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL Server提取数字、英文以及中文的sql语句”吧!

--SQL判断字段值是否有中文createfunctionfun_getCN(@strnvarchar(4000))returnsnvarchar(4000)asbegindeclare@wordnchar(1),@CNnvarchar(4000)set@CN=''whilelen(@str)>0beginset@word=left(@str,1)ifunicode(@word)between19968and19968+20901set@CN=@CN+@wordset@str=right(@str,len(@str)-1)endreturn@CNendselectdbo.fun_getCN('ASDKG论坛KDL')--论坛selectdbo.fun_getCN('ASDKG論壇KDL')--論壇selectdbo.fun_getCN('ASDKDL')--空---------------------------------------提取数字IFOBJECT_ID('DBO.GET_NUMBER2')ISNOTNULLDROPFUNCTIONDBO.GET_NUMBER2GOCREATEFUNCTIONDBO.GET_NUMBER2(@SVARCHAR(100))RETURNSVARCHAR(100)ASBEGINWHILEPATINDEX('%[^0-9]%',@S)>0BEGINset@s=stuff(@s,patindex('%[^0-9]%',@s),1,'')ENDRETURN@SENDGO--测试PRINTDBO.GET_NUMBER('呵呵ABC123ABC')GO--123----------------------------------------------------------------------提取英文IFOBJECT_ID('DBO.GET_STR')ISNOTNULLDROPFUNCTIONDBO.GET_STRGOCREATEFUNCTIONDBO.GET_STR(@SVARCHAR(100))RETURNSVARCHAR(100)ASBEGINWHILEPATINDEX('%[^a-z]%',@S)>0BEGINset@s=stuff(@s,patindex('%[^a-z]%',@s),1,'')ENDRETURN@SENDGO--测试PRINTDBO.GET_STR('呵呵ABC123ABC')GO----------------------------------------------------------------------提取中文IFOBJECT_ID('DBO.CHINA_STR')ISNOTNULLDROPFUNCTIONDBO.CHINA_STRGOCREATEFUNCTIONDBO.CHINA_STR(@SNVARCHAR(100))RETURNSVARCHAR(100)ASBEGINWHILEPATINDEX('%[^吖-座]%',@S)>0SET@S=STUFF(@S,PATINDEX('%[^吖-座]%',@S),1,N'')RETURN@SENDGOPRINTDBO.CHINA_STR('呵呵ABC123ABC')GO----------------------------------------------------------------------过滤重复字符IFOBJECT_ID('DBO.DISTINCT_STR')ISNOTNULLDROPFUNCTIONDBO.DISTINCT_STRGOCREATEFUNCTIONDBO.DISTINCT_STR(@SNVARCHAR(100),@SPLITVARCHAR(50))RETURNSVARCHAR(100)ASBEGINIF@SISNULLRETURN(NULL)DECLARE@NEWVARCHAR(50),@INDEXINT,@TEMPVARCHAR(50)IFLEFT(@S,1)<>@SPLITSET@S=@SPLIT+@SIFRIGHT(@S,1)<>@SPLITSET@S=@S+@SPLITWHILECHARINDEX(@SPLIT,@S)>0ANDLEN(@S)<>1BEGINSET@INDEX=CHARINDEX(@SPLIT,@S)SET@TEMP=LEFT(@S,CHARINDEX(@SPLIT,@S,@INDEX+LEN(@SPLIT)))IF@NEWISNULLSET@NEW=ISNULL(@NEW,'')+@TEMPELSESET@NEW=ISNULL(@NEW,'')+REPLACE(@TEMP,@SPLIT,'')+@SPLITWHILECHARINDEX(@TEMP,@S)>0BEGINSET@S=STUFF(@S,CHARINDEX(@TEMP,@S)+LEN(@SPLIT),CHARINDEX(@SPLIT,@S,CHARINDEX(@TEMP,@S)+LEN(@SPLIT))-CHARINDEX(@TEMP,@S),'')ENDENDRETURNRIGHT(LEFT(@NEW,LEN(@NEW)-1),LEN(LEFT(@NEW,LEN(@NEW)-1))-1)ENDGOPRINTDBO.DISTINCT_STR('A,A,B,C,C,B,C,',',')--A,B,CGO----------------------------------------------------------------------过滤重复字符2IFOBJECT_ID('DBO.DISTINCT_STR2')ISNOTNULLDROPFUNCTIONDBO.DISTINCT_STR2GOCREATEFUNCTIONDBO.DISTINCT_STR2(@Svarchar(8000))RETURNSVARCHAR(100)ASBEGINIF@SISNULLRETURN(NULL)DECLARE@NEWVARCHAR(50),@INDEXINT,@TEMPVARCHAR(50)WHILELEN(@S)>0BEGINSET@NEW=ISNULL(@NEW,'')+LEFT(@S,1)SET@S=REPLACE(@S,LEFT(@S,1),'')ENDRETURN@NEWENDGOSELECTDBO.DISTINCT_STR2('AABCCD')--ABCDGO--------------------------------------------------------------------IFOBJECT_ID('DBO.SPLIT_STR')ISNOTNULLDROPFUNCTIONDBO.SPLIT_STRGOCREATEFUNCTIONDBO.SPLIT_STR(@Svarchar(8000),--包含多个数据项的字符串@INDEXint,--要获取的数据项的位置@SPLITvarchar(10)--数据分隔符)RETURNSVARCHAR(100)ASBEGINIF@SISNULLRETURN(NULL)DECLARE@SPLITLENintSELECT@SPLITLEN=LEN(@SPLIT+'A')-2WHILE@INDEX>1ANDCHARINDEX(@SPLIT,@S+@SPLIT)>0SELECT@INDEX=@INDEX-1,@S=STUFF(@S,1,CHARINDEX(@SPLIT,@S+@SPLIT)+@SPLITLEN,'')RETURN(ISNULL(LEFT(@S,CHARINDEX(@SPLIT,@S+@SPLIT)-1),''))ENDGOPRINTDBO.SPLIT_STR('AA|BB|CC',2,'|')--GO

感谢各位的阅读,以上就是“SQL Server提取数字、英文以及中文的sql语句”的内容了,经过本文的学习后,相信大家对SQL Server提取数字、英文以及中文的sql语句这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!