System.Data.SQLite
View Ticket
Not logged in
Ticket UUID: b31ec390141dd6efe71d72b05e6562ee8962f87a
Title: LINQ 方法 "String.Contains" 在 SQL 语句中会对应生成 CHARINDEX 条件,在参数为中文时筛选结果不正确。
Status: Closed Type: Incident
Severity: Important Priority: High
Subsystem: LINQ Resolution: Rejected
Last Modified: 2016-08-25 00:49:17
Version Found In: 1.0.102
User Comments:
anonymous added on 2016-06-24 07:02:41:
LINQ 方法 "String.Contains" 在 SQL 语句中会对应生成 CHARINDEX 条件,在参数为中文时筛选结果不正确。结果中除了会出现含有关键词的内容,还会出现很多不含有关键词的内容。
在 sqlite 的第三方图形界面工具中,使用 like 语句查询得到的结果是正常的,但发现并不包含 CHARINDEX 方法。
大概检索了一下源码内容,感觉也许是因为 CHARINDEX 的实现,没有考虑到使用 UTF-8 编码存储的文本数据。
我的 C++ 编程水平不是很好,所以不能帮忙修复这个问题,但希望这个问题能尽快获得你们的关注。
也许通过改进 CHARINDEX 方法以支持 UTF-8 的文本,也许可以将 String.Contains 方法生成为 like 查询。
谢谢了!Thank you!

anonymous added on 2016-06-24 07:05:27:
比如“无敌”和“承担”两个词语会被 CHARINDEX 混淆。

mistachkin added on 2016-06-25 18:55:43:
I tried using Google translate to convert the text of this ticket to English;
however, I still do not quite understand the issue.