Выбор группы данных LIKE, но определение строки последней - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь выбрать значения LIKE '%Pro%', но в конечном итоге я всегда хочу, чтобы '%PRO333%' был последним выбранным.

Это мои данные:

userid:    text:
1          PRO11
1          PRO23
1          PRO333
1          PRO2000

Это мой запрос:

select * 
from table1 
where userid=1 and text LIKE '%PRO%' --now when I get that column I always need to return PRO333 as the last column

Ожидаемый результат будет:

userid:    text:
1          PRO11
1          PRO23
1          PRO2000
1          PRO333 --always the last

Как я могу это сделать, спасибо всем за помощь

Ответы [ 2 ]

3 голосов
/ 05 февраля 2020

Вы можете включить сравнение между значениями text и PRO333 в ваше предложение ORDER BY, чтобы отсортировать это значение последним. Например:

SELECT *
FROM table1
WHERE userid = 1 AND text LIKE '%PRO%'
ORDER BY CASE WHEN text = 'PRO333' THEN 1 ELSE 0 END

Вывод:

userid  text
1       PRO11
1       PRO23
1       PRO2000
1       PRO333

Демонстрация по SQLFiddle

0 голосов
/ 05 февраля 2020

Первый способ:

DECLARE @TABLE TABLE(
    userid int,
    [text] nvarchar(100)
)
INSERT INTO @TABLE(userid,text) VALUES
(1,'PRO11'),
(1,'PRO23'),
(1,'PRO333'),
(1,'PRO2000')
SELECT * FROM @TABLE WHERE text LIKE '%PRO%' ORDER BY IIF(text='PRO333',1,0)

Второй способ. Я использовал ROW_NUMBER.

DECLARE @TABLE TABLE(
    userid int,
    [text] nvarchar(100)
)
INSERT INTO @TABLE(userid,text) VALUES
(1,'PRO11'),
(1,'PRO23'),
(1,'PRO333'),
(1,'PRO2000'),
(1,'PRO1233'),
(1,'PRO234234324')
SELECT *,ROW_NUMBER() OVER(ORDER BY(IIF(text='PRO333',1,0))) FROM @TABLE 
...