字符串内大小写插入
Case within string insert into
我有下面的 insert into string 语句,但它的 Case 部分似乎破坏了它。如果来自特定 table 的 Paymenttype 的值为 TNP1,那么我希望它使用一个特定的值,如果是 TNP2,那么我需要使用另一个值。
相反,我收到一条错误消息,指出我的 Case 中的 WHEN 表达式存在问题。
有任何想法吗?使用优势弧
open cur as
select
'insert into pctrnpay'+char(10)+
'('+char(10)+
'ident,'+char(10)+
'actual,'+char(10)+
'sys_type,'+char(10)+
'actualamt,'+char(10)+
'descrip,'+char(10)+
'status,'+char(10)+
'expected,'+char(10)+
'expamt,'+char(10)+
')'+char(10)+
'values'+char(10)+
'('+char(10)+
iif(internalident is not null,char(39)+trim(cast(internalident as
sql_char(5)))+char(39),'Null')+','+char(13)+char(10)+
iif(financialdate is not null,char(39)+trim(cast(financialdate as
sql_char(10)))+char(39),'Null')+','+char(13)+char(10)+
iif(paymenttype is not null,char(39)+'APTB_'+trim(cast(paymenttype as
sql_char(10)))+char(39),'Null')+','+char(13)+char(10)+
iif(amount is not null,trim(cast(amount as
sql_char(4))),'Null')+','+char(13)+char(10)+
char(39)+ case paymenttype when paymenttype='TNP1' then 'App Total
Negotiated Price - Training'
when paymenttype='TNP2' then 'App Total Negotiated
Price - Assessment'
end +char(39)+','+char(13)+char(10)+
');'+char(10)+char(10) str_SQL
from [..\_control\pics.add]._FinancialDetails ;
您目前拥有:
CASE paymenttype
WHEN paymenttype = 'TNP1' THEN ...
WHEN paymenttype = 'TNP2' THEN ...
END
这不是 CASE 表达式的有效形式,您混合了简单的和搜索的 CASE 形式。
一个简单的案例如下所示:
CASE paymenttype
WHEN 'TNP1' THEN ...
WHEN 'TNP2' THEN ...
END
搜索到的 CASE 如下所示:
CASE
WHEN paymenttype = 'TNP1' THEN ...
WHEN paymenttype = 'TNP2' THEN ...
END
两者是等价的,所以你可以从这两种形式中选择一种。
我有下面的 insert into string 语句,但它的 Case 部分似乎破坏了它。如果来自特定 table 的 Paymenttype 的值为 TNP1,那么我希望它使用一个特定的值,如果是 TNP2,那么我需要使用另一个值。 相反,我收到一条错误消息,指出我的 Case 中的 WHEN 表达式存在问题。 有任何想法吗?使用优势弧
open cur as
select
'insert into pctrnpay'+char(10)+
'('+char(10)+
'ident,'+char(10)+
'actual,'+char(10)+
'sys_type,'+char(10)+
'actualamt,'+char(10)+
'descrip,'+char(10)+
'status,'+char(10)+
'expected,'+char(10)+
'expamt,'+char(10)+
')'+char(10)+
'values'+char(10)+
'('+char(10)+
iif(internalident is not null,char(39)+trim(cast(internalident as
sql_char(5)))+char(39),'Null')+','+char(13)+char(10)+
iif(financialdate is not null,char(39)+trim(cast(financialdate as
sql_char(10)))+char(39),'Null')+','+char(13)+char(10)+
iif(paymenttype is not null,char(39)+'APTB_'+trim(cast(paymenttype as
sql_char(10)))+char(39),'Null')+','+char(13)+char(10)+
iif(amount is not null,trim(cast(amount as
sql_char(4))),'Null')+','+char(13)+char(10)+
char(39)+ case paymenttype when paymenttype='TNP1' then 'App Total
Negotiated Price - Training'
when paymenttype='TNP2' then 'App Total Negotiated
Price - Assessment'
end +char(39)+','+char(13)+char(10)+
');'+char(10)+char(10) str_SQL
from [..\_control\pics.add]._FinancialDetails ;
您目前拥有:
CASE paymenttype
WHEN paymenttype = 'TNP1' THEN ...
WHEN paymenttype = 'TNP2' THEN ...
END
这不是 CASE 表达式的有效形式,您混合了简单的和搜索的 CASE 形式。
一个简单的案例如下所示:
CASE paymenttype
WHEN 'TNP1' THEN ...
WHEN 'TNP2' THEN ...
END
搜索到的 CASE 如下所示:
CASE
WHEN paymenttype = 'TNP1' THEN ...
WHEN paymenttype = 'TNP2' THEN ...
END
两者是等价的,所以你可以从这两种形式中选择一种。