gpt4 book ai didi

sql-server - 在 SQL Server 2008 中解析字符

转载 作者:行者123 更新时间:2023-12-02 05:37:56 25 4
gpt4 key购买 nike

我有一个名为 txt_Full_Path 的 SQL 列,其数据如下所示

E:/My_Users//kpa1/eOReport - VSD.mrk 
E:/My_Users//krishr9/Report.mrk
E:/My_Users//kristc/AllPAS.mrk
E:/My_Users//kukerm/v1.mrk
E:/My_Users//ksnedike/abcdef.mrk

如何在第一次出现“//”后从左向右移动时获取值?

这样我就可以在新列中获取这些值。

kpa1
krishr9
kristc
kukerm
ksnedike

最佳答案

DECLARE @x TABLE(y VARCHAR(64))

INSERT @x SELECT 'E:/My_Users//kpa1/eOReport - VSD.mrk'
UNION ALL SELECT 'E:/My_Users//krishr9/Report.mrk'
UNION ALL SELECT 'E:/My_Users//kristc/AllPAS.mrk'
UNION ALL SELECT 'E:/My_Users//kukerm/v1.mrk'
UNION ALL SELECT 'E:/My_Users//ksnedike/abcdef.mrk';

SELECT y, part = SUBSTRING(y, 2, CHARINDEX('/', y, 2)-2)
FROM (SELECT y = SUBSTRING(y, CHARINDEX('//', y) + 1, 64) FROM @x) AS z;

结果:

y                         part
------------------------ ----------
/kpa1/eOReport - VSD.mrk kpa1
/krishr9/Report.mrk krishr9
/kristc/AllPAS.mrk kristc
/kukerm/v1.mrk kukerm
/ksnedike/abcdef.mrk ksnedike

您也可能遇到没有尾随 / 字符的情况,例如'E:/foo//bar' - 如果是,则:

SELECT y, part = SUBSTRING(y, 2, COALESCE(NULLIF(CHARINDEX('/', y, 2),0),66)-2)
FROM (SELECT y = SUBSTRING(y, CHARINDEX('//', y) + 1, 64) FROM @x) AS z;

关于sql-server - 在 SQL Server 2008 中解析字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11400597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com