SqlServer中使用charindex和substring函数拆分字段

SqlServer中先看看这2个函数的作用:

charindex(str1,str,[start]):函数返回子字符串str1在字符串str中的开始位置数值,如果添加了start参数,说明从start值往后查找到第1个位置数值返回;

例:select CHARINDEX('-','A2104010065-000004') 返回值是:12(代表 “- ”所在位置)

substring(str,para1,para2):函数返回字符串str从para1位置开始往后查找长度为para2的子字符串;

例:select substring('A2104010065-000004',1,11) 返回值:A2104010065

在使用举例前要说明,实际业务中字符串长度是不确定的,因此不能当用substring来满足要求;

另外在2019及更高版本中系统已定义了SUBSTRING_INDEX函数,可以直接用来拆分需求。

应用背景:

业务单据中有单据号,不知道有多尔个【-】符号拼接在字段中;但我只需第1个符号前的单据号

字符串。

declare @fnumber varchar(50)
set @fnumber = 'A2104010065-000004-00001-0002'
select case when charindex('-',@fnumber)>0 then substring(@fnumber,1,CHARINDEX('-',@fnumber)-1) else @fnumber END as FNUMBER

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值