当我尝试对存储在HSQLDB中的数据执行此语句时,我得到“字符串数据,右截断”异常。
select case
when InquiryDate = '' then ''
WHEN InquiryDate like '%NOTDATE%' then 'UNKNOWN'
else TO_CHAR(TO_DATE(InquiryDate,'MMDDYY'), 'YYYYMMDD')
end as "InquiryDate"
from T_INQUIRY
知道为什么吗? InquiryDate字段定义为VARCHAR(1000)
答案 0 :(得分:0)
查询在最新的HSQLDB(2.35 / 2.40)中运行良好。
要使其在您使用的版本中工作,请将其中一个字符串文字强制转换为VARCHAR。例如:
select case
when InquiryDate = '' then CAST('' AS VARCHAR(8))
WHEN InquiryDate like '%NOTDATE%' then 'UNKNOWN'
else TO_CHAR(TO_DATE(InquiryDate,'MMDDYY'), 'YYYYMMDD')
end as "InquiryDate"
from T_INQUIRY
注意InquiryDate
不直接用作返回值。您的版本使用空字符串的类型和' UNKNOWN',它是CHAR,而不是VARCHAR。
如果您直接使用列值,它也应该有效:
select case
when InquiryDate = '' then InquiryDate
WHEN InquiryDate like '%NOTDATE%' then 'UNKNOWN'
else TO_CHAR(TO_DATE(InquiryDate,'MMDDYY'), 'YYYYMMDD')
end as "InquiryDate"
from T_INQUIRY