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
我从 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