sql - 如何在 SQLite 中使用阿拉伯逗号选择 SQL
问题描述
我正在尝试使用 SQLite 在 C 中使用阿拉伯语进行选择查询。
一切都很好,但阿拉伯逗号有问题。
它仅适用于阿拉伯语逗号。
sprintf(sql_query, "SELECT id, family_name, given_name, instr(normalized_given_name||normalized_family_name , '%s') FROM Database
WHERE (given_name||family_name LIKE '%%%s%%' OR normalized_given_name||normalized_family_name LIKE '%%%s%%')", searchWord, searchWord, searchWord);
我使用带有 sql_query 值的 sprintf 进行 SQL 查询,该值是 4096 数组。
SELECT id, family_name, given_name, instr(normalized_given_name||normalized_family_name , ،) FROM Database WHERE (given_name||family_name LIKE %،% OR normalized_family_name||normalized_given_name LIKE %،%)
上面的 SQL 是我通过打印 SQL 查询从日志中得到的。
int result1 = sqlite3_prepare_v2(phonebook_Db, sql_query, -1, &main_stmt, 0);
while( (result2 = sqlite3_step(main_stmt)) == SQLITE_ROW)
{
~~
}
这适用于其他语言和阿拉伯语单词。
它只有阿拉伯逗号有问题,它不返回任何结果。
即使有阿拉伯名称带有阿拉伯逗号,它也可以用阿拉伯语找到,但是如果我添加阿拉伯逗号,则找不到它。(例如:ششطسببض، صصينس )
如何使用阿拉伯逗号获得正确的结果?
解决方案
我认为您的问题是由于逗号有空格,但您的 LIKE 语句未指定空格。ششطسببض، صصينس(这里有空间)。
所以你可以尝试改变
%،%
至
% ،%
但我不确定这是否是问题所在。只是给出想法。
编辑:另一个想法是在短语 %،% 周围加上引号 Like so: '%،%'
也许它可能会奏效。
推荐阅读
- angular - 在Angular 2中直接访问延迟加载的模块子路由时出错
- arangodb - 如果ArangoDB中有顶点(例如:明星,电影)和边(例如:star_in,导演,...),如何查询由某人主演和导演的电影?
- vb.net - 从 Datagridview 打印 Checboxcolumn 到 Crystal Report
- python - 更改 Wagtail 用户栏图标
- couchbase - Couchbase Java DCP 客户端不使用恢复文件从所有存储桶开始加载
- java - 是否有任何 Gradle -Sqlj 插件可用于进行 sqlj 翻译,就像我们使用 maven sqlj 插件一样?
- java - 如何为使用 Mysql 的 Java 应用程序创建 exe 文件
- php - 在键控文本字段上搜索数据库,然后在其他文本字段上检索数据
- html - 在较低分辨率视图下裁剪背景图像高度
- c++ - 制作日志文件