Tsql 如何查看按需要排序的char列的值

Tsql 如何查看按需要排序的char列的值,tsql,Tsql,表名为Date,其中一列的名称为MonthOfYear(对于一月,列值为1,对于二月,列值为2,对于三月:3…),另一列为MonthName:此列包含月份的名称(一月、二月、三月…) 我需要看到结果排序(一月是第一列,然后是二月,然后是三月,然后…) 我像这样更新了MonthName,但它不起作用: update Date set [monthname] = cast(monthofyear as nvarchar(3)) + ' ' + rtrim(ltrim([monthname]))

表名为Date,其中一列的名称为MonthOfYear(对于一月,列值为1,对于二月,列值为2,对于三月:3…),另一列为MonthName:此列包含月份的名称(一月、二月、三月…) 我需要看到结果排序(一月是第一列,然后是二月,然后是三月,然后…) 我像这样更新了MonthName,但它不起作用:

update Date
set [monthname] = cast(monthofyear  as nvarchar(3)) + ' ' + rtrim(ltrim([monthname]))

我不知道您所有的列名,但您不想更改MonthName列中的数据

您是否尝试过:

SELECT Year, MonthName
FROM Date
ORDER BY Year, MonthOfYear
要按varchar列排序,可以在单个数字的前面加0

下面是一个示例,展示了如何做到这一点:

declare @t table (StringNumber varchar(3))
insert into @t (StringNumber)
select '9' union
select '10' union
select '11'

select StringNumber
from @t
order by StringNumber

select StringNumber, right('0' + StringNumber, 2) as OrderByStringNumber
from @t
order by right('0' + StringNumber, 2)

无法在字符列上获得所需排序
作为一个字符,12将在2之前排序

您需要在整数列上搜索12,以便在2之前排序

那就在今年的蒙托夫吧

Order By MonthOfYear 

您的问题,并添加一些样本数据和基于该数据的预期输出。求你了,因为某些原因我只能点Monthname@sahar我已经扩展了我的答案,展示了如何对存储为字符串的数字进行排序。