首页 > 解决方案 > 选择分隔字符串字段的子集

问题描述

我的表有一个数据格式如下的字段:

Term 1~Term 2~Term 3~Term 4~Term 5~Term 6~

所有非空值都包含 6 个波浪号分隔的字符串,可能有几个单词长。

我需要从该字段中提取最后 2 个子字符串作为查询的一部分。
我对将数据拆分为多条记录不感兴趣,并且我没有创建存储过程的权限。

提前感谢您的任何建议。

标签: sql-servertsql

解决方案


声明 @Term VARCHAR(100)

SELECT @Term = 'abc~def~ghi~jkl~mno~pqr~'

SELECT RIGHT(@Term,  CHARINDEX('~',REVERSE(@Term),CHARINDEX('~',REVERSE(@Term),2)+1)-1)

这将使最后两个术语保持 ~ 完整。请注意,您可以将 REPLACE() 包裹在其中,以在其中放置波浪号以外的其他内容。


推荐阅读