SQL - обратная часть столбца - PullRequest
1 голос
/ 06 июня 2019

Я хочу перевернуть часть столбца. Ex;

    SELECT Column FROM Table ORDER BY Column ASC

Выход:

Column
------
Kaan001
Kaan002
Kaan003
Turan001
Turan002

Если я использую DESC вместо ASC;

Column
------
Turan002
Turan001
Kaan003
Kaan002
Kaan001

Но я хочу этого;

Column
------
Turan001
Turan002
Kaan001
Kaan002
Kaan003

Это возможно или нет? Пожалуйста, помогите мне ... Спасибо ..

Ответы [ 4 ]

5 голосов
/ 06 июня 2019

Вы можете использовать:

order by left(columnname, len(columnname) - 3) desc,
         right(columnname, 3)
1 голос
/ 06 июня 2019

Вы должны использовать DESC. Он вернет результат по указанному столбцу в порядке убывания.

SELECT ColumnName FROM TableName ORDER BY ColumnName DESC

Если вы не явно упомянули ORDER BY столбца, он будет по умолчанию считаться ASC (в порядке возрастания).

Демонстрация по дб <> fiddle


Согласно вашему отредактированному вопросу, следующий запрос будет работать с использованием PATINDEX

SELECT ColumnName
FROM TableName 
ORDER BY LEFT(ColumnName, PATINDEX('%[0-9]%', ColumnName) - 1) DESC, 
         RIGHT(ColumnName, LEN(ColumnName) - PATINDEX('%[0-9]%', ColumnName) + 1) ASC

Обновленная демоверсия db <> fiddle

0 голосов
/ 06 июня 2019

Насколько я понимаю,

select * from (
 values 
 ('Kaan001')
,('Kaan002')
,('Kaan003')
,('Turan001')
,('Turan002')
) d (val) 
order by left (val, PATINDEX ('%[0-9]%', val) - 1) desc
, right (val, PATINDEX ('%[0-9]%', val)) -- Here, Patindex returns the first appearance of integer. 
0 голосов
/ 06 июня 2019

Вы можете попробовать следующий запрос.

create table #temp (
    id int identity(1,1),
    testCol Varchar(20)
)

insert into #temp values ('Turan002'),('Turan001'),('Kaan003'),('Kaan002'),('Kaan001')    

SELECT 
    * from 
    #temp order by RTRIM(SUBSTRING( testCol , 1 , CHARINDEX( '0' , testCol) - 1)) desc, 
       RTRIM(SUBSTRING( testCol , CHARINDEX( '0' , testCol ), LEN( testCol) - (CHARINDEX( '0' , testCol) - 1))) asc

drop table #temp

Вы можете найти демо Здесь .

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