Как сделать выбор SQL с арабской запятой в SQLite - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь сделать запрос выбора с арабским языком в Си, используя SQLite.

Все хорошо, но арабская запятая имеет проблемы.

Это не работает вообще только для арабской запятой.

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-запрос, используя sprintf со значением sql_query, которое является массивом 4096.

ВЫБЕРИТЕ идентификатор, имя семьи, имя, имя, instr (normalized_given_name || normalized_family_name, ،) из базы данных ГДЕ (имя_файла || имя_файла НРАВИТСЯ% ،% ИЛИ 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) 
{

~~ 

}

Это прекрасно работает с другими языками и арабскими словами.

Проблема с арабской запятой возникает только из-за отсутствия результата.

Несмотря на то, что есть арабское имя с арабской запятой, оно встречается с арабским, но если я добавлю арабскую запятую, его не найти. (напр .: ششطسببض ، صصينس)

Как получить правильный результат с арабской запятой?

1 Ответ

0 голосов
/ 02 июля 2019

Я думаю, что ваша проблема связана с пробелом, но ваш оператор LIKE не указывает пробел. ششطسببض ، صصينس (Здесь есть место).

Так что вы можете попробовать перейти с

%،%

до

% ،%

Но я не уверен, является ли это проблемой или нет. Просто даю идею.

РЕДАКТИРОВАТЬ: другая идея заключается в том, чтобы заключить в кавычки фразу% ،% Вот так: '% ،%'

возможно, это может сработать.

...