1

我从 MySQL 数据库转换为 SQL Server。

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

“状态”:“已解决”

请注意,引号实际上是在列中。

在 MySQL 中,我有功能 ---

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

请注意,我正在使用反斜杠转义双引号(全部四个)。这正如预期的那样工作。

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

我正在执行功能:

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

并且

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

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

解决了

然后它找到所有结果。

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

4

1 回答 1

3

你不需要在"这里逃跑,所以以下应该有效:

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

例如:SqlFiddle

于 2015-07-28T23:34:44.360 回答