Sql server 结果集中的TSQL匹配字符串

Sql server 结果集中的TSQL匹配字符串,sql-server,tsql,sql-server-2012,Sql Server,Tsql,Sql Server 2012,我有一个历史记录表列,其中包含请求中发生的事件的操作。列数据如下所示 Updated Status | Open - New > Open - Assigned 我试图提出一个查询,在那里我可以找到所有状态为打开分配的请求 因为动作包含胡萝卜左边的先前状态和胡萝卜右边的新状态,所以我得到了错误的匹配 有没有一种方法可以说search after>允许mean查找所有已移动到当前状态的请求 SELECT * FROM TABLE WHERE status LIKE '%' + @actio

我有一个历史记录表列,其中包含请求中发生的事件的操作。列数据如下所示

Updated Status | Open - New > Open - Assigned
我试图提出一个查询,在那里我可以找到所有状态为打开分配的请求

因为动作包含胡萝卜左边的先前状态和胡萝卜右边的新状态,所以我得到了错误的匹配

有没有一种方法可以说search after>允许mean查找所有已移动到当前状态的请求

SELECT * FROM TABLE WHERE status LIKE '%' + @action
将查找以@action参数结尾的操作


您也可以搜索“>”,然后在右侧取子字符串,然后搜索,但这太复杂了

我发现理解这个问题有点困难。你能通过分享一些样本数据和你想要得到的结果来澄清这一点吗?看来你在这里面临的最大问题是规范化。如果您的数据已正确规范化,则您在查找符合条件的行时不会遇到任何问题。@SeanLange这只是一个excel转储文件,我将其放入表中,以便更好地对其进行操作。讨厌VBA宏:正确,但如果我正在查找“打开-新建”状态,它将提供以前处于该状态的所有项目以及现在处于该状态的所有项目。我想我是在试图将“动作”视为两个独立的值。胡萝卜的左边是“previousStatus”,右边是“NewStatus”。我正在尝试查找所有数据,其中'NewStatus=Open-New'@SBB注释我删除了上一个%。有帮助吗?
SELECT * FROM TABLE WHERE REVERSE(SUBSTRING(REVERSE(status),0,CHARINDEX('>',REVERSE(status)))) like '%' +  action + '%'
SELECT * FROM TABLE WHERE REVERSE(SUBSTRING(REVERSE(status),0,CHARINDEX('>',REVERSE(status)))) like '%' +  action + '%'