SQL字符串拆分

时间:2016-12-02 14:21:16

标签: sql tsql split

经过一些建议,我目前在SQL中的一个名为response_string的nvarchar字段中存储了一串数据,我想只得到<tag></tag>之间的措辞。 例如<tag>test</tag>这将返回test

我目前正在使用下面的代码,但它对我来说似乎过于复杂,我想知道是否有更好的写作方式。

(case when charindex('</tag>',[response_String])>charindex('<tag>',[response_String]) 
then substring([response_String],charindex('<tag>',[response_String])+(11),(charindex('</tag>',[response_String])-charindex('<tag>',[response_String]))-(11))  end) 

不幸的是,由于我必须使用此代码的方式,我无法使用函数。

2 个答案:

答案 0 :(得分:0)

select try_cast('<tag>test</tag>' as xml).value('/tag[1]','nvarchar(100)')

答案 1 :(得分:0)

您可以更改选择查询,其中标记的列显示如下。如果丢失,它不会引发错误。

select replace( replace(column_name , "<tag>","" ), "</tag>","") from table_name

如果有最多2-3个节点,可以像上面一样使用,但万一比考虑数据存储的方式多.3-4组替换可能会使查询位尴尬,处理一个视图就可以了..