sql server 字符串中包含多个某符号,截取至第n个特殊符号之前

也不知道我的朋友怎么又这么多奇怪的需求

他的新要求是:若某个字符串里,包含多个某符号或者字符,截取这个字符串的第n个特殊符号之前的字符

代码如下

 create function szg_substr(@str varchar(1000),@punctuation char(1),@wantindex int)
 returns varchar(1000)
 as
 begin
     declare @resultstr varchar(1000)
     set @resultstr = @str
     declare @count int,  ---定义变量   记录循环次数
              @index int   ---定义变量   记录分号所在的下标的位置
     set @count=0   ---为变量赋初值
     set @index=0    ---为变量赋初值
     while (@count<@wantindex)
     begin
        set @count=@count+1    ---循环次数加1
        set  @index = @index + convert(int, CHARINDEX(@punctuation,@str))   ---记录下标(累加)
        set @str = SUBSTRING(@str, CHARINDEX(@punctuation,@str)+1,len(@str)- CHARINDEX(@punctuation,@str))   --每找到一个分号,就将字符串从 分号截取,留后半部分
     end
     set @resultstr=SUBSTRING(@resultstr,0, @index)
     return @resultstr
 end

嗯,他说还是很好用的。我很欣慰~

转载于:https://www.cnblogs.com/shanzhigang/archive/2013/05/27/3101926.html

### 回答1: 可以使用 SUBSTRING 和 CHARINDEX 函数来实现: 假设你要截取字符串为 @str,可以使用以下语句: ``` SELECT SUBSTRING(@str, CHARINDEX(',', @str) + 1, LEN(@str) - CHARINDEX(',', REVERSE(@str)) - CHARINDEX(',', @str)) ``` 这里使用了 REVERSE 函数来找到最后一个逗号的位置,然后用 LEN 函数减去第一个逗号和最后一个逗号之间的字符数,就可以得到需要截取字符串。 ### 回答2: 在SQL Server,要截取一个字符串第一个逗号和最后一个逗号之间的内容,可以使用一些内置的字符串函数来实现。 以下是一种可能的解决方案: 1. 首先,使用CHARINDEX函数找到第一个逗号的位置。该函数接受两个参数,第一个是要查找的字符串,第二个是要查找的字符或子字符串。例如,使用CHARINDEX(',', column_name)可以找到第一个逗号的位置。 2. 接下来,使用SUBSTRING函数从字符串的第一个逗号位置开始,截取字符串的末尾。SUBSTRING函数接受三个参数,第一个是要截取字符串,第二个是开始截取的位置,第三个是要截取的字符数。例如,使用SUBSTRING(column_name, CHARINDEX(',', column_name) + 1, LEN(column_name))可以截取从第一个逗号位置开始到字符串末尾的内容。 3. 最后,将截取得到的字符串与REVERSE函数一起使用,来找到最后一个逗号在截取字符串的位置。REVERSE函数用于将给定字符串反转。例如,使用CHARINDEX(',', REVERSE(column_name))可以找到截取字符串的最后一个逗号的位置。 4. 最后一步,使用SUBSTRING函数再次截取截取得到的字符串,从第一个字符开始到最后一个逗号的位置减一。例如,使用SUBSTRING(column_name, 1, LEN(column_name) - CHARINDEX(',', REVERSE(column_name)))可以截取第一个逗号和最后一个逗号之间的内容。 综上所述,要截取一个字符串第一个逗号和最后一个逗号之间的内容,可以使用上述步骤来实现。注意,这只是一种可能的解决方案,还可以根据具体的需求和数据进行调整和优化。 ### 回答3: 在SQL Server,可以使用字符串函数和子查询来截取第一个逗号和最后一个逗号之间字符串。 以下是一种可行的方法: 假设有一个名为"str"的字符串列,我们要截取第一个逗号和最后一个逗号之间字符串。 首先,我们可以使用CHARINDEX函数找到第一个逗号的位置: DECLARE @firstComma INT SET @firstComma = CHARINDEX(',', str) 然后,我们可以使用SUBSTRING函数从第一个逗号的位置开始截取字符串,指定截取的长度为最后一个逗号的位置减去第一个逗号的位置: DECLARE @lastComma INT SET @lastComma = CHARINDEX(',', REVERSE(str)) SELECT SUBSTRING(str, @firstComma + 1, LEN(str) - @firstComma - @lastComma) AS result 其,LEN函数用于计算字符串的长度,REVERSE函数用于反转字符串,以便找到最后一个逗号的位置。 最后,将截取字符串赋予一个别名,例如"result"。 以上是一种简单的方法来截取第一个逗号和最后一个逗号之间字符串。根据具体情况,还可以使用其他字符串函数或者正则表达式来实现截取操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值