如何根据需要查看char列的值

时间:2017-03-12 07:45:21

标签: tsql

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

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

2 个答案:

答案 0 :(得分:0)

我不知道您的所有列名,但您不想更改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)

答案 1 :(得分:0)

你无法在char列上得到你想要的东西 作为char 12将在2之前排序

您需要在整数列上搜索12以在2

之前排序

所以在MonthOfYear上排序

Order By MonthOfYear