【发布时间】:2014-07-11 18:22:48
【问题描述】:
我是 SQL Server 的新手。我有一个小问题,我无法查找。关键是我无法在我的列STATEID 中获取数据的顺序,我想将它从最小值排序到最大值。我正在使用ORDER BY 或ASC,但它不起作用。还有什么其他方式可以从我的列STATEID 中得到精确的最小到最大序列。我正在使用 SQL Server 2008。
这是我的代码示例。
ALTER PROCEDURE [dbo].[basicGatherSelect]
@StateID nvarchar(5),
@Name nvarchar(50)
AS
BEGIN
BEGIN TRANSACTION
SET NOCOUNT ON;
SELECT
StateID, name
FROM
tblState
ORDER BY
STATEID ASC
IF @@error <> 0
BEGIN
ROLLBACK
RAISERROR ('PROBLEM', 16, 1)
RETURN
END
COMMIT
END
结果:
- 10黎班
- 3 俄罗斯
- 4 莱托尼亚
- 5 奥地利
- 7 巴西
- 8 Njemacka
- 9 阿根廷
- 1 斯比贾
- 2 波斯纳
【问题讨论】:
-
你能发布这些行吗?
-
我现在发布了。我会发送图片,但我没有声誉
-
您是否使用 NVARCHAR 作为 STATEID?如果它们都是数字,则使用 INT。
-
Bad habits to kick : choosing the wrong data type - 你应该始终使用最合适的数据类型 - 毕竟这就是它们的用途!如果您有 numbers - 那么请使用 numeric 数据类型,这样您就可以将它们相加并正确排序!不要仅仅出于懒惰而使用字符串!
-
将STATEID转换为INT,然后排序。
CAST(STATEID AS INT) ASC
标签: sql sql-server-2008