求一sql删除字符算法,o(∩_∩)o...

时间:2021-02-19 09:52:18
假如我有一个变量@a="132,125,12,235,1244,234,23"
我要删除变量中的任意一个逗号间的数字,并保持变量个格式不变,即每个数值之间都有一个逗号间隔
比如我要删除12,则删除后的结果要为@a="132,125,235,1244,234,23"
假如我要删除23,则删除后的结果要为@a="132,125,12,235,1244,234"
请问这个sql怎么写好呢?夲人的sql很菜写不出来,请高手帮忙啊!谢谢!!!

10 个解决方案

#1


C#可以实现, 用切割字符串的办法,然后移除要删除的字符串,最后再执行SQL语句

#2


怎么感觉 像正则呢?


帮顶 吧

#3


引用 1 楼 skyaspnet 的回复:
C#可以实现, 用切割字符串的办法,然后移除要删除的字符串,最后再执行SQL语句
我想直接在sql里处理啊,这样的话,就高效很多啦

#4



declare @a nvarchar(500)
declare @repcha nvarchar(10)
set  @repcha = '12'
set @a='132,125,12,235,1244,234,23'
if (substring(@a,len(@a),1)<>',') set @a=@a+','
set @a =replace(@a,@repcha+',','')
if (substring(@a,len(@a),1)=',') set @a=substring(@a,0,len(@a))
print @a

#5


declare @a varchar(100)
set @a='132,125,12,235,1244,234,23'
set @a=replace(','+@a+',',',23,',',')
set @a=right(left(@a,len(@a)-1),len(@a)-2)
print @a

#6


引用 4 楼 wangkun9999 的回复:
SQL codedeclare@anvarchar(500)declare@repchanvarchar(10)set@repcha='12'set@a='132,125,12,235,1244,234,23'if(substring(@a,len(@a),1)<>',')set@a=@a+','set@a=replace(@a,@repcha+',','')if(substring(@a,len(@a),1)=',')set@a=substring(@a,0,len(@a))print@a

GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!
o(∩_∩)o...哈哈

#7


引用 5 楼 jinjazz 的回复:
SQL codedeclare@avarchar(100)set@a='132,125,12,235,1244,234,23'set@a=replace(','+@a+',',',23,',',')set@a=right(left(@a,len(@a)-1),len(@a)-2)print@a

也是很GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!
o(∩_∩)o...哈哈,不知道以上两位高手的算法谁的更准确更效率呢?我采用谁的好呢???

#8


仔细看过了,感觉还是剪子大哥的方法更准确些啊,o(∩_∩)o...

#9


似乎问题已经解决了..

来晚了.呵呵.

#10


引用 5 楼 jinjazz 的回复:
SQL codedeclare @a varchar(100)
set @a='132,125,12,235,1244,234,23'
set @a=replace(','+@a+',',',23,',',')
set @a=right(left(@a,len(@a)-1),len(@a)-2)
print @a

#1


C#可以实现, 用切割字符串的办法,然后移除要删除的字符串,最后再执行SQL语句

#2


怎么感觉 像正则呢?


帮顶 吧

#3


引用 1 楼 skyaspnet 的回复:
C#可以实现, 用切割字符串的办法,然后移除要删除的字符串,最后再执行SQL语句
我想直接在sql里处理啊,这样的话,就高效很多啦

#4



declare @a nvarchar(500)
declare @repcha nvarchar(10)
set  @repcha = '12'
set @a='132,125,12,235,1244,234,23'
if (substring(@a,len(@a),1)<>',') set @a=@a+','
set @a =replace(@a,@repcha+',','')
if (substring(@a,len(@a),1)=',') set @a=substring(@a,0,len(@a))
print @a

#5


declare @a varchar(100)
set @a='132,125,12,235,1244,234,23'
set @a=replace(','+@a+',',',23,',',')
set @a=right(left(@a,len(@a)-1),len(@a)-2)
print @a

#6


引用 4 楼 wangkun9999 的回复:
SQL codedeclare@anvarchar(500)declare@repchanvarchar(10)set@repcha='12'set@a='132,125,12,235,1244,234,23'if(substring(@a,len(@a),1)<>',')set@a=@a+','set@a=replace(@a,@repcha+',','')if(substring(@a,len(@a),1)=',')set@a=substring(@a,0,len(@a))print@a

GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!
o(∩_∩)o...哈哈

#7


引用 5 楼 jinjazz 的回复:
SQL codedeclare@avarchar(100)set@a='132,125,12,235,1244,234,23'set@a=replace(','+@a+',',',23,',',')set@a=right(left(@a,len(@a)-1),len(@a)-2)print@a

也是很GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!GOOD!
o(∩_∩)o...哈哈,不知道以上两位高手的算法谁的更准确更效率呢?我采用谁的好呢???

#8


仔细看过了,感觉还是剪子大哥的方法更准确些啊,o(∩_∩)o...

#9


似乎问题已经解决了..

来晚了.呵呵.

#10


引用 5 楼 jinjazz 的回复:
SQL codedeclare @a varchar(100)
set @a='132,125,12,235,1244,234,23'
set @a=replace(','+@a+',',',23,',',')
set @a=right(left(@a,len(@a)-1),len(@a)-2)
print @a