Sql 带有NULL的大小写不起作用
如果列的值为Sql 带有NULL的大小写不起作用,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,如果列的值为NULL,我想给它一些值 insert into inward_doc_tracking_trl (Mkey,Entry_Sr_No,N_UserMkey,N_Department,CStatus_Flag,Remarks, CUser_Id, U_Datetime,NStatus_Flag,Delete_Flag, CDept_Id, Ref_Mkey,No_Of_Days,Approved_Amount,Chq_No,Chq_
NULL,我想给它一些值
insert into inward_doc_tracking_trl
(Mkey,Entry_Sr_No,N_UserMkey,N_Department,CStatus_Flag,Remarks,
CUser_Id,
U_Datetime,NStatus_Flag,Delete_Flag,
CDept_Id,
Ref_Mkey,No_Of_Days,Approved_Amount,Chq_No,Chq_dated,Chq_Bank,Chq_Amount,
Vendor_MKey,Vendor_Comp_Mkey,Project_Mkey,Program_mkey,Payment_MKey,Due_Date,Updated_Remarks,Updated_Bill_no,
Updated_Bill_Date,Updated_Bill_Amt,Party_Name,Acc_mkey,
TotalDeductions,Broker_Mkey,Customer_Mkey,Payable_Amt,Balance_Amt)
values (@inv_trl_mkey,@entry_sr_no,@Nuser_mkey,@n_department,@nstatus_flag2,@remarks,
CASE WHEN (@cuserid IS NULL) THEN 'YES' ELSE 'NO' END AS @cuserid,
@u_datetime,@nstatus_flag,@delete_flag,
CASE WHEN (@cdept_id IS NULL) THEN 'YES' ELSE 'NO' END AS @cdept_id,
@inv_hdr_mkey,@No_Of_Days,
@Approved_Amount,@Chq_No,@Chq_dated,
@Chq_Bank,@Chq_Amount,@Vendor_MKey,@Vendor_Comp_Mkey,@Project_Mkey,@Program_mkey,@Payment_MKey,@Due_Date
,@Updated_Remarks,@Updated_Bill_no,@Updated_Bill_Date,@Updated_Bill_Amt,@Party_Name,
@Acc_mkey,@TotalDeductions,@Broker_Mkey,@Customer_Mkey,@Payable_Amt,@Balance_Amt)
但得到的错误是
关键字“AS”附近的语法不正确
如错误所示,问题与案例无关,而与As
有关。因此,将作为
删除:
values (@inv_trl_mkey, @entry_sr_no, @Nuser_mkey, @n_department, @nstatus_flag2 ,@remarks,
(CASE WHEN (@cuserid IS NULL) THEN 'YES' ELSE 'NO' END),
@u_datetime,@nstatus_flag,@delete_flag,
(CASE WHEN (@cdept_id IS NULL) THEN 'YES' ELSE 'NO' END),
. . .
在VALUES()
子句中命名表达式的值是没有意义的。正如错误所示,问题与大小写无关,而与As
有关。因此,将作为
删除:
values (@inv_trl_mkey, @entry_sr_no, @Nuser_mkey, @n_department, @nstatus_flag2 ,@remarks,
(CASE WHEN (@cuserid IS NULL) THEN 'YES' ELSE 'NO' END),
@u_datetime,@nstatus_flag,@delete_flag,
(CASE WHEN (@cdept_id IS NULL) THEN 'YES' ELSE 'NO' END),
. . .
在VALUES()
子句中命名表达式的值是没有意义的。从查询中删除“AS”,因为您将在表中插入,所以不再需要它
CASE WHEN (@cuserid IS NULL) THEN 'YES' ELSE 'NO' END
从查询中删除“AS”,因为您将在表中插入,所以不再需要它
CASE WHEN (@cuserid IS NULL) THEN 'YES' ELSE 'NO' END
如果我理解正确,您使用的是values
中声明变量的值。如果你在那里做一些计算,你不应该把它命名
AS @cuserid
无论如何:你不允许这样命名任何表达式
你必须区分
- 使用变量的值和
- 为表达式指定别名
在VALUES
中,您只给出一个值列表:
VALUES(@var1,@var2,@var3+5)
将使用@var1
和@var2
的值,并将使用var3
进行一些计算此处不需要任何别名
更新
您可以考虑在将变量设置为变量<代码> @ CUSERID的地方执行此逻辑。在这种情况下,您可以在
值中使用此变量,而不必担心是否为NULL
。如果我理解正确,您使用的是值中声明变量的值。如果你在那里做一些计算,你不应该把它命名
AS @cuserid
无论如何:你不允许这样命名任何表达式
你必须区分
- 使用变量的值和
- 为表达式指定别名
在VALUES
中,您只给出一个值列表:
VALUES(@var1,@var2,@var3+5)
将使用@var1
和@var2
的值,并将使用var3
进行一些计算此处不需要任何别名
更新
您可以考虑在将变量设置为变量<代码> @ CUSERID的地方执行此逻辑。在这种情况下,您可以在
值中使用此变量,而不必担心是否为NULL
。插入到内部文档跟踪中
(Mkey,条目编号,N用户Mkey,N部门,CStatus标志,备注,
客户号,
U_日期时间、NStatus_标志、Delete_标志、,
CDept_Id,
参考编号、天数、批准金额、Chq编号、Chq日期、Chq银行、Chq金额、,
供应商、供应商、公司、项目、计划、付款、到期日、最新备注、最新账单号、,
更新账单日期、更新账单金额、当事人姓名、账户、,
扣除总额、经纪人、客户、应付金额、余额)
选择(@inv_trl_mkey、@entry_sr_no、@user_mkey、@n_department、@nstatus_flag2、@comments,
如果(@cuserid为NULL),则“是”或“否”以cuserid结尾,
@u_datetime、@nstatus_标志、@delete_标志,
如果(@cdept_id为NULL),则“是”,否则“否”以cdept_id结尾,
@inv_hdr_mkey,@No_天,
@批准金额,@Chq\U编号,@Chq\U日期,
@Chq_银行、@Chq_金额、@Vendor_MKey、@Vendor_Comp_MKey、@Project_MKey、@Program_MKey、@Payment_MKey、@到期日
,@Updated\u备注,@Updated\u账单号,@Updated\u账单日期,@Updated\u账单金额,@Party\u姓名,
@Acc\u mkey、@TotalDeclarations、@Broker\u mkey、@Customer\u mkey、@Payment\u Amt、@Balance\u Amt)强文本
(Mkey,条目编号,N用户Mkey,N部门,CStatus标志,备注,
客户号,
U_日期时间、NStatus_标志、Delete_标志、,
CDept_Id,
参考编号、天数、批准金额、Chq编号、Chq日期、Chq银行、Chq金额、,
供应商、供应商、公司、项目、计划、付款、到期日、最新备注、最新账单号、,
更新账单日期、更新账单金额、当事人姓名、账户、,
扣除总额、经纪人、客户、应付金额、余额)
选择(@inv_trl_mkey、@entry_sr_no、@user_mkey、@n_department、@nstatus_flag2、@comments,
如果(@cuserid为NULL),则“是”或“否”以cuserid结尾,
@u_datetime、@nstatus_标志、@delete_标志,
如果(@cdept_id为NULL),则“是”,否则“否”以cdept_id结尾,
@inv_hdr_mkey,@No_天,
@批准金额,@Chq\U编号,@Chq\U日期,
@Chq_银行、@Chq_金额、@Vendor_MKey、@Vendor_Comp_MKey、@Project_MKey、@Program_MKey、@Payment_MKey、@到期日
,@Updated\u备注,@Updated\u账单号,@Updated\u账单日期,@Updated\u账单金额,@Party\u姓名,
@Acc_mkey、@TotalDeclarations、@Broker_mkey、@Customer_mkey、@Payment_Amt、@Balance_Amt)strong文本您的陈述是正确的,只是如果需要使用AScase,请不要使用AS,而要使用Abihabi87所述的case陈述中的块。最重要的一点是,当列数据类型为数值时,不能将varchar数据保存在列中。为此,您需要更改列的数据类型或在列中保存数值。例如,您可以使用“是/否”,而不是使用“0/1”。您的陈述是正确的。如果您需要使用AS,请不要在case陈述中使用AS,而不要在case陈述中使用Abihabi87所述的块。最重要的一点是,当列数据类型为数值时,不能将varchar数据保存在列中。为此,您需要更改列的数据类型或在列中保存数值。例如,您可以使用“是/否”,而不是使用“0/1”。我在存储过程中使用此选项。这就是为什么要这样加。现在获取错误为Erro