gpt4 book ai didi

sql - PATINDEX 和 SUBSTRING 没有返回正确的值

转载 作者:行者123 更新时间:2023-12-02 06:28:31 24 4
gpt4 key购买 nike

我有以下查询:

select [Service Item Value],
SUBSTRING
(
[Service Item Value],
PATINDEX('%[3][C][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%',
[Service Item Value]),
10
) AS [Circuit Reference]
FROM [dbo].[3c_and_2c_Report_Multiple_customers];

查询应在服务项值列中查找任何字符串,并仅提取长度为 10 个字符且以 3C 开头的任何字符串。它正在这样做(请参阅查询的最后结果)但是,当没有模式匹配时,它只会返回它想要的任何内容

Service Item Value                     Circuit Reference
38159 (Cease) & 38160 (Re-Provide) 38159 (Ce
384K 384K
3925 bundle no. 1230 3925 bund
3C00156746 3C00156746
P752480A,C72/217777*3C00190634, 3C00190634
P0638887A, C72/23872 * 3C00193454 3C00193454
(C72/29814 * P0647973A)>3C00231114 * 3C00231114`

基本上,如果没有模式匹配,则将 Circuit Reference 列留空。

最佳答案

PATINDEX 如果没有匹配项将返回 0,如果第一个字符匹配则返回 1...(第二个字符为 2,等等)

SUBSTRING 将接受 0 作为第二个 start 参数。

所以你基本上允许失败的 PATINDEX 仍然返回一个子字符串。

也许使用 CASE 表达式来捕获 PATINDEX 的零返回

CASE WHEN PATINDEX('%[3][C][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', [Service Item Value]) = 0 THEN ''
ELSE
SUBSTRING([Service Item Value],PATINDEX('%[3][C][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', [Service Item Value]),10)
END AS [Circuit Reference]

关于sql - PATINDEX 和 SUBSTRING 没有返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48079829/

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