我想做一个仅针对特定 ID 进行强制转换的选择,但它似乎不起作用。
示例:
SELECT
CASE
WHEN(@ID <> 1) THEN Code
WHEN(@ID = 1) THEN Cast(Code AS int)
END Code FROM ....
有什么想法吗?
最佳答案
为什么要这样做? SQL Server 表达式具有单一固定类型。换句话说,单个表达式不能是 varchar(50)
或 int
,具体取决于表达式的计算方式。您可以将每种情况转换为 sql_variant
,但这可能有意义也可能没有意义,具体取决于您想要执行的操作。
编辑
如果您从存储过程执行此查询,则可以创建一个 IF..ELSE block 来根据 @ID 的值执行不同版本的查询。例如:
IF (@ID = 1) BEGIN
SELECT Cast(Code AS int) AS Code FROM ...
END
ELSE BEGIN
SELECT Code FROM ...
END
关于SQL Server,选择具有不同转换的 CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2826732/