SQL server 如何截取一个字符串中第2个'-'后面的字符

SELECT求大神指教一下A.LRP_NOAS生产令号,A.LRP_NO,RIGHT(A.LRP_NO,CHARINDEX('-',REVERSE(A.LRP_NO))-... SELECT
求大神指教一下
A.LRP_NO AS 生产令号,
A.LRP_NO,
RIGHT(A.LRP_NO,CHARINDEX('-',REVERSE(A.LRP_NO)) - 1) as 行号
FROM
dbo.CORDER_DTL_QMS AS A
我用这个截取报错

消息 536,级别 16,状态 2,第 1 行
传递到 RIGHT 函数的长度参数无效。

实际数据如下:
生产令号
C-WG1108150001-10
C-WG1108150001-20
C-XX1108280001-10
C-XX1108280001-20
C-C1900-10
C-C1900-20
C-C1900-30
C-C1900-40
C-C1901-10
C-C1900-50
'-'后面的位数不定
展开
 我来答
司马刀剑
高粉答主

2018-04-16 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7415万
展开全部

sql语句可以截取指定字段后面的字符串,以sqlserver为例,需要用到charindex函数和substring函数。

如test表中有如下数据,要求截图str字段中逗号后边的内容。

可用如下语句:

1

select id,substring(str,charindex(',',str)+1,len(str)-charindex(',',str)) from test;

结果截图:

charindex函数说明:

语法:

CHARINDEX ( expression1 , expression2 , [ start_location ] )

参数:

expression1

一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。

expression2

一亏配个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。

start_location

在 expression2 中搜索 expression1 时的起始字符位置。如销猜指果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。

substring函数说明:

语法:

substring( expression, start, length)

参数:expression 字符串、二进制字符串、文本、图兆纤像、列或包含列的表达式start 整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置length 整数或可以隐式转换为 int 的表达式,指定子字符串的长度

追问
我想知道怎么写第二个特殊符号后面的字符,我用
SELECT
RIGHT('C-XX1108280001-20',CHARINDEX('-',REVERSE('C-XX1108280001-20')) - 1) as 行号
这个执行时可以执行出来,但是一旦把字符换成字段了就报错了,有没有什么更好的办法去截取
youshioka0
2024-04-06
知道答主
回答量:3
采纳率:0%
帮助的人:1438
展开全部
不是大神
我自己打的 看起来有点复杂 其实就是粘贴了一下
substring(substring(ph,charindex('-',PH)+1,len(PH)-charindex('-',PH)),charindex('-',substring(ph,charindex('-',PH)+1,len(PH)-charindex('-',PH)))+1,len(PH)-charindex('-',substring(ph,charindex('-',PH)+1,len(PH)-charindex('-',PH)))) 计划单号
第一行里面的substring(ph,charindex('-',PH)+1,len(PH)-charindex('-',PH)) 就是做两次提取这是第一次
第二次就是把里面的ph换成 第一行的内容盯塌 就行了 这应该是最笨的办法斗则扮 谁叫我是初学者
还是表格处理简单好多 直接空灶用mid就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式