【发布时间】:2014-01-02 18:23:55
【问题描述】:
SQL 代码:
DECLARE @SortOrder nvarchar(max);
SET @SortOrder = 'name';
SELECT * FROM [database_name].[schema_name].[table_name]
ORDER BY CASE @SortOrder
WHEN 'id' THEN id
WHEN 'name' THEN name
END;
输出: 消息 245,第 16 层,状态 1,第 3 行 将 nvarchar 值 'foo' 转换为数据类型 int 时转换失败。
当我改为使用 @SortOrder = 'id' 时,它可以完美运行。当我执行正常的 SELECT 和 ORDER BY 名称时,它也可以完美运行。
为什么它会尝试将该 nvarchar 值转换为数据类型 int,我该如何阻止它这样做?
【问题讨论】:
标签: sql sql-server