SQL 服务器 charindex() 似乎失败了 - 它包括标点符号吗?

SQL Server charindex() appears to fail - does it include punctuation?

我从 MySQL 数据库转换为 SQL 服务器。

在一栏中,我正在寻找一个字符串:

"status":"solved"

请注意,引号按字面意思出现在列中。

在MySQL中,我有函数---

instr(child_events, '\"status\":\"solved\"')>0

请注意,我用反斜杠转义了双引号(全部四个)。这按预期工作。

现在,我在 SQL 服务器中拥有完全相同的数据(已验证)。

我正在执行的功能:

charindex('\"status\":\"solved\"', child_events)>0

还有

charindex('""status"":""solved""', child_events)>0

这是失败的。它带回了几行(第一行可能是实际的 2%,第二行可能是 0%)。但后来我说简单地找到:

solved

然后找到所有结果。

这是怎么回事?为什么 charindex 不工作?列数据类型是 varchar(max) --- 我最初是从文本数据类型转换过来的(我习惯了 MySQL) - 所以也许这不起作用。列的长度也可以很长 --- 可能多达 300 或 400 个字符。非常感谢任何想法。

您不需要在此处转义 ",因此以下操作应该有效:

charindex('"status":"solved"', child_events)>0

例如:SqlFiddle