我有一个历史记录表列,其中包含在请求中发生的action
个事件。列数据看起来像这样。
Updated Status | Open - New > Open - Assigned
我正在尝试提出一个查询,我可以找到状态为Open - Assigned
的所有请求。
SELECT * FROM TABLE WHERE status = '%' + action + '%';
由于该动作既包含先前状态(在胡萝卜的左侧),也包含新状态(在胡萝卜的右侧),我得到的是错误的匹配。
有没有办法可以在>
之后进行搜索,这样就可以找到已经转移到当前状态的所有请求?
答案 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 + '%'