Здесь есть две хитрости.Первый - это упорядочить по чему-то, чего на самом деле нет в таблице, то есть по части слова после «$ value».Вы можете использовать sqlite substr и sqlite length , чтобы найти эту часть, что-то вроде substr(column,length($value))
.Поскольку желаемым результатом является «целое» слово, его можно объединить с оператором конкатенации ||
, что-то вроде $value||substr(column,length($value))
.
Второй трюк заключается в выборе column1
ИЛИ column2
в том же поле результатов, чтобы их можно было упорядочить как один столбец.Один из способов сделать это - запрос UNION
.
С такими данными:
column1 column2
---------- ----------
autob autoa
mavery autoc
maverz mavera
autoz maverq
autoa autob
Этот запрос:
select 'auto'||substr(column1,length('auto') + 1) word
from wordTable
where column1 like 'auto%'
UNION
select 'auto'||substr(column2,length('auto')+1)
from wordTable
where column2 like 'auto%'
order by 1
Возвращает результат:
word
----------
autoa
autob
autoc
autoz
ADDENDUM
После дальнейших размышлений я, скорее, опустошил его.Первый «трюк» является спорным, если вы используете UNION с соответствующими «словами» в том же столбце результата, что и:
SELECT column1,*
from wordTable
where column1 like '$value%'
UNION
SELECT column2,*
from wordTable
where column2 like '$value%'
ORDER BY 1