首页 > 解决方案 > 如何在 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) 
{

~~ 

}

这适用于其他语言和阿拉伯语单词。

它只有阿拉伯逗号有问题,它不返回任何结果。

即使有阿拉伯名称带有阿拉伯逗号,它也可以用阿拉伯语找到,但是如果我添加阿拉伯逗号,则找不到它。(例如:ششطسببض، صصينس )

如何使用阿拉伯逗号获得正确的结果?

标签: sqlcsqlitearabic

解决方案


我认为您的问题是由于逗号有空格,但您的 LIKE 语句未指定空格。ششطسببض، صصينس(这里有空间)。

所以你可以尝试改变

%،%

% ،%

但我不确定这是否是问题所在。只是给出想法。

编辑:另一个想法是在短语 %،% 周围加上引号 Like so: '%،%'

也许它可能会奏效。


推荐阅读