2014-02-17 40 views
1

我需要从一个Sql Server中的字段值中读取一个文件地址我认为使用SUBSTRING但是SUBSTRING需要启动索引和长度但是在我的字段值中长度是不同的。如何将一个Nvarchar值从一个单词到另一个单词在Sql Server中

一个例子我提起价值

 <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:\新建文件夹(2)\ 8 \ PAYAM.tif从属性标签在图片的HTML标记。 我需要这个字由SQL Server查询

谢谢

回答

1

这应该为你工作:

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

到位@Text的用你的实际的列名。

0

试试这个,

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 [email protected] 
SELECT 
@i.value('(/Border/Canvas/Border/Image/@Tag)[1]', 'nvarchar(max)') as TagValue 
相关问题