我有以下SQL语句:
select *
from
(select
id,
left(id, 6) as Hauptnummer,
convert(substring(id, 8), SQL_BIGINT) as Detailnummer
from
Proben
where
id like '%-%'
and id like '2%'
and length(id) > 7) as a
order by
Hauptnummer desc, Detailnummer当我运行这条语句时,我得到以下错误:
表达式错误
不使用ORDER BY子句即可正确执行该语句。
如何编写此ORDER BY子句?
发布于 2020-06-18 15:33:10
您正在尝试按在子查询之外的字段排序。让我们尝试相同的代码(下面是MS SQL的语法):
/* declare and create temp (in-memory) table */
declare @proben table
(
id nvarchar(24)
)
/* insert come test data to table */
insert @proben(id) values('2345-67890')
insert @proben(id) values('54654645-6257890')
insert @proben(id) values('2345-67890546541')
insert @proben(id) values('4355343542345-67890')
/* check of select of your script */
select *
from (
select
id,
left(id, 6) as Hauptnummer,
CAST(substring(id, 8, 0) AS BIGINT) as Detailnummer
from
@proben
where
id like '%-%'
and id like '2%'
and len(id) > 7
order by
Hauptnummer desc, Detailnummer
) as a
order by
a.Hauptnummer desc, a.Detailnummer发布于 2020-06-18 16:06:41
如果在SQL-Server(T-SQL)中使用的代码可以使用以下代码来实现: Substring函数接受字符转换,因此代码已按以下方式重写。子串函数的语法:SUBSTRING(string, start, length)
例如:
select *
from
(select
id,
left(id, 6) as Hauptnummer,
substring(convert (varchar(20), id ), 1, 2) as Detailnummer
from
Proben
where
id like '%-%'
and id like '2%'
and len(id) > 7) as a /* SQL server it is len instead length */
order by
Hauptnummer desc, Detailnummerhttps://stackoverflow.com/questions/62444484
复制相似问题