代码之家  ›  专栏  ›  技术社区  ›  Thiyaneshwaran S

在SQL Server中用regex替换文本

  •  1
  • Thiyaneshwaran S  · 技术社区  · 15 年前

    当前我有一个类型为的SQL Server列 nvarchar(max) 其中有以开头的文本

    <span class="escape_<<digits>>"></span>
    

    唯一不同模式的是 <<digits>> 在类名中。

    共同点是

    <span class="myclass_ 
    

    以及结束

    </span>
    

    一些样本值是

    <span class="myclass_12"></span>
    <span class="myclass_234"></span>
    <span class="myclass_4546"></span>
    

    这些跨距文本仅出现在列的开头。中间任何这样的匹配跨度都不应该被删除或匹配。

    使用regex的SQL Server查询是什么来删除所有这些SPAN事件的?

    2 回复  |  直到 15 年前
        1
  •  4
  •   marc_s    15 年前

    如果你有这样的价值观

    <span class="myclass_12"></span>
    <span class="myclass_234"></span>
    <span class="myclass_4546"></span>
    

    你只想得到 myclass_12 等。从中获取值,使用此查询:

    SELECT 
        REPLACE(REPLACE(string, '<span class="', ''), '"></span>', '') 
    FROM 
        dbo.YourTable
    

    它不是基于regex的,因为默认情况下,SQL Server/Transact-SQL不支持regex匹配。如果您需要并希望通过所有方式进行regex匹配,请考虑创建一个将该功能实现到SQL Server中的SQL-CLR程序集。

        2
  •  4
  •   Oded    15 年前

    SQL Server不支持现成的regex。

    如果您使用的是SQL Server 2005或更高版本,则可以为SQL Server编写一个clr函数并调用它。

    this 有关如何执行此操作的详细信息(SQL Server 2005>正则表达式使模式匹配和数据提取更加容易)。