我有下面的SQL,在执行时抛出“Numeric data not valid”错误:
SELECT WORKKEY , WRKTITLE, INT(SUBSTR(WRKTITLE , 26, 8) )
FROM IACDTAA.IACWTL
WHERE
REGEXP_LIKE(TRIM(WRKTITLE), '^[0-9]{1,4} ARTX LU 079 PUBLDTE=[0-9]{8} A$')
AND WORKKEY IN (SELECT WORKKEY FROM IACDTAA.IACNTC WHERE NTFCTLKEY = 195586 )
AND INT(SUBSTR(WRKTITLE , 26, 8) ) > 0 ;
问题似乎是比较条件INT(SUBSTR(WRKTITLE , 26, 8) ) > 0
基本上,正则表达式试图找出WRKTITLE字段具有以下值的记录:
0048 ARTX LU 079 PUBLDTE=19880708 A
0060 ARTX LU 079 PUBLDTE=20120101 A
但在我看来,SQL实际上选择了WRKTITLE不是这种格式的记录,这导致INT函数被应用于“非数字”值。
这里会出什么问题?
1条答案
按热度按时间mwngjboj1#
好吧,所以似乎有一些关于铸造的东西,我不知道,但下面的工作:
不需要转换成INT,只需要使用char值进行简单的比较就可以了!现在如果有人能指出原因,那就太好了!