经过一些建议,我目前在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)
不幸的是,由于我必须使用此代码的方式,我无法使用函数。
答案 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组替换可能会使查询位尴尬,处理一个视图就可以了..