Я не могу преобразовать предложение сравнения строк в моем запросе: msSQL в SQLite - PullRequest
0 голосов
/ 02 апреля 2019

Я использую 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...