T-SQL正则表达式替换

Ton*_*ING 6 regex sql t-sql sql-server

我需要在SQL服务器中替换字符串.我知道t-sql并不完全支持这种正则表达式替换功能,但我们可以使用这样的功能PATINDEX.

基本上,我需要的是用wwwwww [0-9]替换URL开头的字符串,例如:

  • www.123456.com => 123456.com
  • www2.123456.com => 123456.com

我试过:PATINDEX('(www[0-9]?)\.%',@url)但它与我需要的不符.有没有人知道如何在没有功能CLR的情况下简单地做到这一点?

Ale*_* K. 8

您可以

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
Run Code Online (Sandbox Code Playgroud)

对于

(No column name)
mail.xxx.com
foo.com
bar.com
wwwz.quz.com
Run Code Online (Sandbox Code Playgroud)