如何在Microsoft SQL Server 2016中提取字段末尾ID(去除引号间内容)
在SQL Server 2016中提取末尾项目ID的方法
针对你的场景——字符串列前可能带有0个或多个双引号包裹的注释,仅需提取末尾的项目ID,可以通过反转字符串+字符定位的方式实现,直接用SQL语句就能搞定:
SELECT CASE WHEN CHARINDEX('"', REVERSE(Item)) > 0 THEN RIGHT(Item, CHARINDEX('"', REVERSE(Item)) - 1) ELSE Item END AS Item, Qty FROM 你的表名;
逻辑说明
- 先通过
REVERSE(Item)把字符串反转,原字符串最后一个双引号会变成反转后的第一个双引号 - 用
CHARINDEX('"', REVERSE(Item))定位这个双引号在反转字符串中的位置 - 如果存在双引号,就用
RIGHT(Item, ...)从原字符串末尾截取掉双引号及之前的内容(减1是为了排除双引号本身) - 如果没有双引号(即字符串本身就是ID),直接返回原
Item值
拿你给的示例测试:
- 输入
"There can be any number of comment""Like this"144,反转后找到第一个双引号的位置是4,RIGHT(Item, 4-1)就会提取出末尾的144 - 输入
2d3eu时,因为找不到双引号,直接返回原字符串
内容的提问来源于stack exchange,提问作者Sara Takaya
相关产品推荐
相关产品推荐

