从sql列值获取子字符串

编程入门 行业动态 更新时间:2024-10-22 02:40:01
本文介绍了从sql列值获取子字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我在sql表中有一个数据类型为varchar的列,我想从该列获取子字符串 例如我有一个像 ID |的数据工作名称 1 | 11-92-23-04 2 | 12-13-04 3 | 12-763-07 4 | 12-67 从这些我希望获得第二个破折号的名单,如 11-92 12-13 12-763 12-67

I have a column in a sql table having datatype varchar,I want to get substring from that column e.g. I have a data like ID | Job Name 1 | 11-92-23-04 2 | 12-13-04 3 | 12-763-07 4 | 12-67 From these I want to get list seperated by 2nd dash like 11-92 12-13 12-763 12-67

推荐答案

如果您想从中获取零件字符串,使用它: If you would like to get parts from string, use this: DECLARE @tmp TABLE (ID INT IDENTITY(1,1), [Job Name] VARCHAR(30)) INSERT INTO @tmp ([Job Name]) SELECT '11-92-23-04' UNION ALL SELECT '12-13-04' UNION ALL SELECT '12-763-07' UNION ALL SELECT '12-67' ;WITH Parts AS ( SELECT 1 AS PartNo, ID, LEFT([Job Name], CHARINDEX('-',[Job Name])-1) AS Part, RIGHT([Job Name], LEN([Job Name])- CHARINDEX('-',[Job Name])) AS Remainder, [Job Name] FROM @tmp WHERE CHARINDEX('-',[Job Name])>0 UNION ALL SELECT PartNo+1 AS PartNo, ID, LEFT([Remainder], CHARINDEX('-',[Remainder])-1) AS Part, RIGHT([Remainder], LEN([Remainder])- CHARINDEX('-',[Remainder])) AS Remainder, [Job Name] FROM Parts WHERE CHARINDEX('-',[Remainder])>0 UNION ALL SELECT PartNo+1 AS PartNo, ID, Remainder AS Part, NULL AS Remainder, [Job Name] FROM Parts WHERE CHARINDEX('-',[Remainder])=0 ) SELECT ID, PartNo, Part, [Job Name] FROM Parts WHERE PartNo<3 ORDER BY ID, PartNo

结果:

Result:

ID PartNo Part [Job Name] 1 1 11 11-92-23-04 1 2 92 11-92-23-04 2 1 12 12-13-04 2 2 13 12-13-04 3 1 12 12-763-07 3 2 763 12-763-07 4 1 12 12-67 4 2 67 12-67

一种方法是编写一个使用RegularExpression的CLR函数。 使用直接SQL复杂的字符串操作很快变得乏味。 一个更好的想法是将数据放入你想要的方式 out 。 One way is to write a CLR function that uses a RegularExpression. Using straight SQL for complex string manipulation quickly become tedious. A better idea is to put the data in the way you want to get it out.

试试这段代码 Try this code select SUBSTRING(JobName,0,CHARINDEX ('-',JobName,CHARINDEX ('-',JobName,0)+1))

SELECT SUBSTRING(JobName, 0, case WHEN CHARINDEX('-', JobName, CHARINDEX('-', JobName, 0) + 1) > 0 THEN CHARINDEX('-', JobName, CHARINDEX('-', JobName, 0) + 1) ELSE len(JobName) + 1 end ) FROM ScheduleMaster)

更多推荐

从sql列值获取子字符串

本文发布于:2023-10-27 00:01:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1531726.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   sql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!