gpt4 book ai didi

sql-server - 什么是 SQL Server 中的 regexp_replace 等价物

转载 作者:行者123 更新时间:2023-12-04 04:12:21 30 4
gpt4 key购买 nike

我在 Oracle 中有这段代码,我需要将其转换为 SQL Server 以获得相同的行为。我用过 REPLACE功能。它似乎有效,但我只是想确定一下。

REGEXP_REPLACE(
phonenumber,
'([[:digit:]]{3})([[:digit:]]{3})([[:digit:]]{4})',
'(\1)\2-\3'
) phonenumber

最佳答案

SQL Server 没有 native 正则表达式支持。您将需要使用 CLR(或如 @Lukasz Szozda 在评论中指出的较新的 Language Extensions 之一)。

如果我正确理解了正则表达式,尽管它匹配 10 位数字的字符串并将前 3 个分配给第 1 组,将第二个 3 分配给第 2 组,将最后 4 个分配给第 3 组,然后在表达式 (\1)\2-\3 中使用反向引用

您可以使用内置的字符串函数来执行此操作,如下所示

SELECT CASE
WHEN phonenumber LIKE REPLICATE('[0-9]', 10)
THEN FORMATMESSAGE('(%s)%s-%s',
LEFT(phonenumber, 3),
SUBSTRING(phonenumber, 4, 3),
RIGHT(phonenumber, 4))
ELSE phonenumber
END

关于sql-server - 什么是 SQL Server 中的 regexp_replace 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61488458/

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