对于像这样的字符串列"This is comment 1""comment 2"3302
,双引号之间的0个或多个注解与结尾的某个项目的任意长度或字符的id连接。如何在Microsoft SQL Server 2016上仅提取ID,以便最终结果成为3302
?
输入示例:
Item Qty
2d3eu 30
"This item is discontinued"103d2h 20
"Just some random comment"1er3fhvd 10
"There can be any number of comment""Like this"144 20
所需输出:
Item Qty
2d3eu 30
103d2h 20
1er3fhvd 10
144 20
3条答案
按热度按时间7ivaypg91#
您可以通过找到字符串中最后一个
"
,然后将所有字符取到RIGHT
中来提取Item
。注意,我们在字符串的开头添加一个"
,以确保每个值中至少有一个:输出:
Demo on dbfiddle
l5tcr1uw2#
如果ID永远只有4个字符长,你可以使用comment = right(comment,4)
但是,如果代码的长度可能会改变,则需要找到最右边的双引号字符,然后取后面的文本。(下面假设字符串最多为100个字符,因此根据需要进行调整。你还需要用单引号括起你的原始字符串,以便sql满意)。
摘自@Philip Kelley的另一个Stack Exchange回答:Find index of last occurrence of a sub-string using T-SQL
nr7wwzry3#
请尝试以下解决方案。
它基于通过XML和XQuery的 * 标记化 *。
r[last()]
predicate 完成了所有的魔术。SQL语句
输出