【发布时间】:2013-11-24 21:54:45
【问题描述】:
是否可以使以下查询字符串不区分大小写?
SELECT SUBSTR(raw,INSTR(raw,'".$term."') - 50,350) as term,
(LENGTH(raw) - LENGTH(REPLACE(raw,'".$term."',''))) /LENGTH('".$term."') AS occur,name,title
FROM (
SELECT ( LENGTH(raw) - LENGTH(REPLACE(raw,'".$term."','')) ) / LENGTH('".$term."') AS occur, raw, consol.name,title
FROM consol
WHERE LENGTH(raw) - LENGTH(REPLACE(raw,'".$term."',''))>0 AND raw LIKE '%".$term."%' COLLATE utf8_general_ci ORDER BY occur DESC
) t ";
表的引擎是 MyISAM,编码是 UTF8。当我从命令行运行查询时,它可以工作,但是当我通过浏览器执行它时,它会引发以下错误。
注意:查询失败:COLLATION 'utf8_general_ci' 对 CHARACTER SET 'latin1' in 无效
表格以 UTF-8 编码,排序规则为 utf8_general_ci。如何确保 "small" 查询匹配 small 以及 Small 或 SMALL ?
【问题讨论】:
-
表的编码/整理不一定等于任何给定列的编码/整理。检查您的列是否确实是 utf8。
-
列的编码是 UTF-8 Unicode (utf8),排序规则是 utf8_general_ci
-
这似乎与 LENGTH 和 REPLACE 函数有关?这可能吗?
标签: php mysql case-insensitive