字符串数据,在select期间抛出右截断错误

时间:2017-08-31 03:33:53

标签: java sql exception hsqldb

当我尝试对存储在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)

1 个答案:

答案 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