gpt4 book ai didi

sql - 数字上的sql server中的子字符串

转载 作者:行者123 更新时间:2023-12-04 23:43:40 25 4
gpt4 key购买 nike

我有一个名为“PersonNameID”的列名

其中包含两个值

ABCD-GHJI
ABHK-67891
HJKK-HJJJMH-8990

我必须只提取“PersonNameID”的第一部分,它包含“-”之后的数字。理想情况下,我的输出应该是

ABCD-GHJI
ABHK
HJKK-HJJJMH

但是当我使用下面的代码时:

SELECT TOP 100

CONVERT(NVARCHAR(100),

SUBSTRING(PersonNameID, 1,
CASE
WHEN CHARINDEX('-', PersonNameID) > 0
THEN LEN(PersonNameID) -
LEN(REVERSE(SUBSTRING(REVERSE(PersonNameID), 1, CHARINDEX('-', REVERSE(PersonNameID)))))
ELSE LEN(PersonNameID)

END
)
) AS New_PersonNameID
FROM Person

我得到的输出为

ABCD
ABHK
HJKK

是否对上述代码进行了任何修改以获得所需的输出?

最佳答案

使用模式匹配找到数字,然后算出数字在哪里

SELECT
LEFT(PersonNameID,
CASE WHEN PersonNameID LIKE '%[0-9]%' AND CHARINDEX('-', PersonNameID) > 0
THEN
CHARINDEX('-', PersonNameID)-1
ELSE
LEN(PersonNameID)
END) AS NewPersonId
FROM
Person

关于sql - 数字上的sql server中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17873490/

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