Я использую msSQL для своей системы.
Но мне нужно использовать базу данных Android: SQLite.
Цель моего запроса - найти инициал Корана.
В msSQL работает сравнение строк.
Для теста я сделал свой запрос следующим образом:
select [UserNo],[UserName]
from
(select [UserNo], [UserName],
SUBSTRING(replace([UserName], ' ', ''),1,1)[name0],
SUBSTRING(replace([UserName], ' ', ''),2,1)[name1],
SUBSTRING(replace([UserName], ' ', ''),3,1)[name2],
SUBSTRING(replace([UserName], ' ', ''), 4,1)[name3],
SUBSTRING(replace([UserName], ' ', ''), 5,1)[name4]
from Info_User
where [UserName] >= 'ㄱ' and [UserName] < 'A') as sub
where ([name0] >= 'ㅎ' and [name0] < 'A' and [name1] >= 'ㅈ' and [name1] < 'ㅉ' and [name2] >= 'ㅇ' and [name2] < 'ㅈ')
or ([name1] >= 'ㅎ' and [name1] < 'A' and [name2] >= 'ㅈ' and [name2] < 'ㅉ' and [name3] >= 'ㅇ' and [name3] < 'ㅈ')
or ([name2] >= 'ㅎ' and [name2] < 'A' and [name3] >= 'ㅈ' and [name3] < 'ㅉ' and [name4] >= 'ㅇ' and [name4] < 'ㅈ')
order by [UserName] asc;
Это действительно очень хорошо работает в msSQL.
Моя версия SQL: Microsoft SQL Server Managemnet Studio 17.
Но, как я сказал в первый раз, мне нужно преобразовать этот запрос для SQLite.
SQLite не имеет SUBSTRING, но SUBSTR.
Итак, я конвертирую свой запрос следующим образом,
select [UserNo],[UserName]
from
(select [UserNo], [UserName],
SUBSTR(replace([UserName], ' ', ''),1,1)[name0],
SUBSTR(replace([UserName], ' ', ''),2,1)[name1],
SUBSTR(replace([UserName], ' ', ''),3,1)[name2],
SUBSTR(replace([UserName], ' ', ''), 4,1)[name3],
SUBSTR(replace([UserName], ' ', ''), 5,1)[name4]
from Info_User
where [UserName] >= 'ㄱ' and [UserName] < 'A') as sub
where ([name0] >= 'ㅎ' and [name0] < 'A' and [name1] >= 'ㅈ' and [name1] < 'ㅉ' and [name2] >= 'ㅇ' and [name2] < 'ㅈ')
or ([name1] >= 'ㅎ' and [name1] < 'A' and [name2] >= 'ㅈ' and [name2] < 'ㅉ' and [name3] >= 'ㅇ' and [name3] < 'ㅈ')
or ([name2] >= 'ㅎ' and [name2] < 'A' and [name3] >= 'ㅈ' and [name3] < 'ㅉ' and [name4] >= 'ㅇ' and [name4] < 'ㅈ')
order by [UserName] asc;
Он определенно запускается, когда я отлаживаю это, так что я думаю, что этот запрос является правильным предложением грамматически.
Я думаю, что мое предложение WHERE неприемлемо в SQLite.
Как я могу сравнить строки в SQLite?