微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从第二次出现获取值

如何解决从第二次出现获取值

我在 sql Server 中有一个问题。

如何从 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];

为了解释一下,上面的内容从名称的子字符串开始,从 第二个 下划线开始。

,

几个 CHARINDEXSTUFF 在这里运行良好:

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 举报,一经查实,本站将立刻删除。