我需要在 SQL Server 中替换字符串。我知道 t-sql 并不完全支持这个正则表达式替换功能,但我们可以使用诸如 PATINDEX
之类的函数来做到这一点。
基本上,我需要的是替换以 www 或 www[0-9] 开头的 URL 字符串,例如:
- www.123456.com => 123456.com
- www2.123456.com => 123456.com
我尝试过:PATINDEX('(www[0-9]?)\.%',@url)
,但它与我需要的不匹配。有谁知道如何在没有函数 CLR 的情况下简单地做到这一点?
最佳答案
你可以
with t(f) as (
select 'www.foo.com' union
select 'www9.bar.com' union
select 'wwwz.quz.com' union
select 'mail.xxx.com'
)
select
case when patindex('www.%', f) + patindex('www[0-9].%', f) = 0 then f else substring(f, 1 + charindex('.', f), len(f)) end
from t
对于
(No column name)
mail.xxx.com
foo.com
bar.com
wwwz.quz.com
关于sql - T-SQL正则表达式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20972673/