sql - T-SQL正则表达式替换

标签 sql sql-server regex tsql

我需要在 SQL Server 中替换字符串。我知道 t-sql 并不完全支持这个正则表达式替换功能,但我们可以使用诸如 PATINDEX 之类的函数来做到这一点。

基本上,我需要的是替换以 wwwwww[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/

相关文章:

mysql - 从表中查找不匹配的用户

c# - Entity Framework Eager 只加载其他表的一个子集

SQL 服务器 : Attempting to output a count with a date

java - 使用正则表达式,是否可以在同一范围内同时使用 "is"和 "is not"范围定义?

sql - 除以两个数字时,sql数据类型错误

python - Pypyodbc: Can't open lib 'FreeTDS': file not found") 尝试连接 SQL Server 时出错

phpmyadmin import/export - 在不更改数据的情况下向旧表添加新结构

JAVA正则表达式查找字符串

python - 正则表达式以匹配除注释掉的图像 URL 之外的任何图像 URL

sql - 一次插入或更新多个表的最佳做法是什么