gpt4 book ai didi

sql - 字符范围包括 PATINDEX 中的右方括号

转载 作者:行者123 更新时间:2023-12-04 20:08:40 26 4
gpt4 key购买 nike

有类似的问题,但我一直无法找到这个特定案例的答案。

我正在尝试对列执行替换,以便将任何类型的括号内的任何内容替换为硬编码字符串。

例如字符串 012345[678]将更改为 012345[XXXXX]这应该适用于任何类型的支架,所以 012345{678}会变成012345{XXXXX}以及。

我一直在尝试使用 PATINDEX:

SELECT CASE WHEN PATINDEX('%[([<{]%', column1) = 0
THEN column1
ELSE LEFT(column1, PATINDEX('%[([<{]%', column1))
+ 'XXXXX'
+ SUBSTRING(column1, PATINDEX('%[)>}[]]]%', column1), 1)
END
FROM mytable

正是最后的 PATINDEX 给我带来了问题,因为右方括号结束了由 [] 表示的组。句法。我试图通过将它括在嵌套括号中来逃避它,但它似乎不起作用。除了为方括号添加一个额外的大小写和使用CHARINDEX之外,我正在绘制一个空白。有什么更好的想法吗?

最佳答案

另一种解决方法是使用 isnull 的组合。和 nullif而不是为方括号添加额外的案例。

SELECT CASE WHEN PATINDEX('%[([<{]%', column1) = 0
THEN column1
ELSE LEFT(column1, PATINDEX('%[([<{]%', column1))
+ 'XXXXX'
+ SUBSTRING(column1, ISNULL(NULLIF(PATINDEX('%[)>}]%', column1), 0), CHARINDEX(']', column1)), 1)
END
FROM myTable

关于sql - 字符范围包括 PATINDEX 中的右方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21834556/

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