SqlServer教程—第三章(字符处理二)

SqlServer教程—第三章(字符处理二),第1张

概述一、字符串比较函数 1-- 比较两个字符串中包含的数据项是否相同的用户定义函数: CREATE FUNCTION dbo.f_CompareSTR( @s1  varchar(8000),  --要比较的第一个字符串 @s2  varchar(8000),  --要比较的第二个字符串 @split varchar(10)    --数据分隔符 )RETURNS bit AS BEGIN  IF L

一、字符串比较函数

1-- 比较两个字符串中包含的数据项是否相同的用户定义函数:
CREATE FUNCTION dbo.f_CompareSTR(
@s1  varchar(8000),  --要比较的第一个字符串
@s2  varchar(8000),  --要比较的第二个字符串
@split varchar(10)    --数据分隔符
)RETURNS bit
AS
BEGIN
 IF LEN(@s1)<>LEN(@s2) RETURN(0)
 DECLARE @r1 table(col varchar(100))
 DECLARE @r2 table(col varchar(100))
 DECLARE @splitlen int
 SET @splitlen=LEN(@split+'a')-2
 WHILE CHARINDEX(@split,@s1)>0
 BEGIN
  INSERT @r1 VALUES(left(@s1,CHARINDEX(@split,@s1)-1))
  SET @s1=STUFF(@s1,1,@s1)+@splitlen,'')
 END
 INSERT @r1 VALUES(@s1)

 WHILE CHARINDEX(@split,@s2)>0
 BEGIN
  INSERT @r2 VALUES(left(@s2,@s2)-1))
  SET @s2=STUFF(@s2,@s2)+@splitlen,'')
 END
 INSERT @r2 VALUES(@s2)
 RETURN(CASE
  WHEN EXISTS(SELECT * FROM @r1 a FulL JOIN @r2 b ON a.col=b.col WHERE a.col IS NulL OR b.col IS NulL)
  THEN 0 ELSE 1 END)
END
GO


if exists (select * from dbo.sysobjects where ID = object_ID(N'[dbo].[f_CompareSTR]') and xtype in (N'FN',N'IF',N'TF'))
drop function [dbo].[f_CompareSTR]
GO

2--比较两个字符串中包含的数据项是否有任意一个相同
CREATE FUNCTION dbo.f_CompareSTR(
@s1  varchar(8000),  --要比较的第二个字符串
@split varchar(10)    --数据分隔符
)RETURNS bit
AS
BEGIN
 DECLARE @splitlen int
 SET @splitlen=LEN(@split+'a')-2
 WHILE CHARINDEX(@split,@s1)>0
 BEGIN
  IF CHARINDEX(@split+left(@s1,@s1)-1)+@split,@split+@s2+@split)>0
   RETURN(1)
  SET @s1=STUFF(@s1,'')
 END
 RETURN(CASE WHEN CHARINDEX(@split+@s1+@split,@split+@s2+@split)>0 THEN 1 ELSE 0 END)
END

二、非法字符串处理

if exists (select * from dbo.sysobjects where ID = object_ID(N'[dbo].[f_replace]') and xtype in (N'FN',N'TF'))
drop function [dbo].[f_replace]
GO

 去掉字符串中,小于32的字符  保留 TAB  char(9)          换行 char(10)          回车 char(13)  如果上述字符也不需要,则将函数中的注释删除 create function f_replace( @str varchar(8000) )returns varchar(8000) as begin  select @str=replace(@str,a,'')  from(select a=N''   union all select N'' union all select N''   union all select N'' union all select N''   union all select N'' union all select N''   union all select N'' --  union all select N' ' --TAB  char(9) --  union all select N' --  '      --换行 char(10)   union all select N' ' union all select N' ' --  union all select N' --  '      --回车 char(13)   union all select N'' union all select N''   union all select N'' union all select N''   union all select N'' union all select N''   union all select N'' union all select N''   union all select N'' union all select N''   union all select N'' union all select N''   union all select N'

总结

以上是内存溢出为你收集整理的SqlServer教程第三章(字符处理二)全部内容,希望文章能够帮你解决SqlServer教程—第三章(字符处理二)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1180196.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-02
下一篇2022-06-02

发表评论

登录后才能评论

评论列表(0条)

    保存