【问题标题】:How to SUBSTRING A Nvarchar Value From A Word To Another Word In Sql Server如何在 Sql Server 中将 Nvarchar 值从一个单词转换为另一个单词
【发布时间】:2026-02-16 22:50:01
【问题描述】:

我需要从 Sql Server 中的字段值读取文件地址我认为使用 SUBSTRING 但 SUBSTRING 需要开始索引和长度,但在我的字段值长度不同。

我提交的价值示例

     <Border BorderThickness="0,0,0,0" CornerRadius="5,5,5,5" Name="_mainBlockBorder" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"><Canvas Name="_contentCanvas" Margin="1,1,1,1"><Border Width="202.608503937008" Height="205.148346456693"><Image Source="file:///W:/New folder (2)/8/PAYAM.tif" Stretch="Fill" Tag="W:\New folder (2)\8\PAYAM.tif" /></Border></Canvas></Border>

我需要的结果:W:\New 文件夹 (2)\8\PAYAM.tif 来自图像 Html 标记中的属性标记。 我需要这个词通过 Sql Server 查询

谢谢

【问题讨论】:

    标签: sql-server substring


    【解决方案1】:

    这应该适合你:

    SELECT LEFT(RIGHT(@text, LEN(@text) - CHARINDEX('Tag="', @text) - 4), CHARINDEX('"', RIGHT(@text, LEN(@text) - CHARINDEX('Tag="', @text) - 4 - 1)))
    

    使用您的实际列名代替@text。

    【讨论】:

      【解决方案2】:

      试试这个,

      Declare @j nvarchar(max)
      
      set @j='<Border BorderThickness="0,0,0,0" CornerRadius="5,5,5,5" Name="_mainBlockBorder" ><Canvas Name="_contentCanvas" Margin="1,1,1,1"><Border Width="202.608503937008" Height="205.148346456693"><Image Source="file:///W:/New folder (2)/8/PAYAM.tif" Stretch="Fill" Tag="W:\New folder (2)\8\PAYAM.tif" /></Border></Canvas></Border>'
      Declare @i xml=@j
      SELECT 
      @i.value('(/Border/Canvas/Border/Image/@Tag)[1]', 'nvarchar(max)') as TagValue
      

      【讨论】: