如何解决从第二次出现获取值
如何从 sql Server 中的 _
符号中获取第二次出现的值。
表:Product_details
CREATE TABLE [dbo].[product_details](
[name] [varchar](500) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[product_details] ([name]) VALUES (N'abc_xyz_pen')
INSERT [dbo].[product_details] ([name]) VALUES (N'def_rav_pen_two')
INSERT [dbo].[product_details] ([name]) VALUES (N'ade_rav_ted_ted_pen')
INSERT [dbo].[product_details] ([name]) VALUES (N'te_ty_te_de_rd_te')
基于上表,我想要如下输出
姓名 |
---|
笔 |
pen_two |
ted_ted_pen |
te_de_rd_te |
我试过如下
select substring(name,charindex('_',name,1),len(name))
from product_details
以上查询未给出准确结果。
解决方法
您可以使用:
SELECT
name,SUBSTRING(name,CHARINDEX('_',name,name) + 1) + 1,LEN(name)) AS second
FROM [dbo].[product_details];
为了解释一下,上面的内容从名称的子字符串开始,从 第二个 下划线开始。
,几个 CHARINDEX
和 STUFF
在这里运行良好:
SELECT STUFF(pd.[name],1,CI2.I,'')
FROM dbo.product_details pd
CROSS APPLY (VALUES(CHARINDEX('_',pd.[name])))CI1(I)
CROSS APPLY (VALUES(CHARINDEX('_',pd.[name],CI1.I+1)))CI2(I);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。