gpt4 book ai didi

sql-server - 关于 'CASE'转换失败

转载 作者:行者123 更新时间:2023-12-02 20:23:45 24 4
gpt4 key购买 nike

在使用“CASE”时,我遇到了从未听说过的问题。
问题是这样的:我在“SELECT”子句中使用“CASE”语句作为字段。调用int数据类型的列时,成功;但是,当调用varchar或datetime时,它不成功。
在错误结果中,据说我将临时字段,包括'CASE'语句标记为int,但事实并非如此。请帮忙...

The 'STORED PROCEDURE' Content

CREATE PROC spRegistry_PersonsGetField
@ID int,
@Field varchar(100)
AS
SELECT CASE @Field
WHEN 'Name' THEN Name
WHEN 'Surname' THEN Surname
WHEN 'Username' THEN Username
WHEN 'Password' THEN Password
WHEN 'Status' THEN dbo.fnStatus(Status)
WHEN 'EMail' THEN EMail
WHEN 'Tel' THEN dbo.fnIsEmpty(Tel)
WHEN 'Address' THEN dbo.fnIsEmpty(Address)
WHEN 'City' THEN dbo.fnIsEmpty(City)
WHEN 'BirthDate' THEN dbo.fnDate(BirthDate)
WHEN 'Gender' THEN dbo.fnGender(Gender)
WHEN 'Lang' THEN Lang
ELSE NULL
END
AS [Alan] varchar(200)
FROM Registry_Persons
WHERE ID = @ID

我的查询

EXEC spRegistry_PersonsGetField 1, 'BirthDate'

错误信息

Conversion failed when converting the varchar value '04/11/2011' to data type int.

最佳答案

T-SQL Precedence当评估 CASE 以便计算出单个返回的数据类型时,将应用规则。由于 int 的优先级高于 varchar,因此尝试隐式转换为 int,但随后失败。

要解决此问题,请将 intdatetime 表达式转换为 varchar

关于sql-server - 关于 'CASE'转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8106225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com