结果集中的TSQL匹配字符串

时间:2017-08-03 15:43:06

标签: sql-server tsql sql-server-2012

我有一个历史记录表列,其中包含在请求中发生的action个事件。列数据看起来像这样。

Updated Status | Open - New > Open - Assigned

我正在尝试提出一个查询,我可以找到状态为Open - Assigned的所有请求。

SELECT * FROM TABLE WHERE status = '%' + action + '%';

由于该动作既包含先前状态(在胡萝卜的左侧),也包含新状态(在胡萝卜的右侧),我得到的是错误的匹配。

有没有办法可以在>之后进行搜索,这样就可以找到已经转移到当前状态的所有请求?

2 个答案:

答案 0 :(得分:1)

SELECT * FROM TABLE WHERE status LIKE '%' + @action

将找到以@action参数结尾的操作。

你也可以寻求'>'然后在右边搜索子字符串然后搜索但是它太复杂了

答案 1 :(得分:1)

SELECT * FROM TABLE WHERE REVERSE(SUBSTRING(REVERSE(status),0,CHARINDEX('>',REVERSE(status)))) like '%' +  action + '%'