警告:#1292 截断不正确的 DECIMAL 值

问题描述 投票:0回答:1

我在使用以下 SQL 脚本时遇到问题,收到警告“#1292 截断了不正确的 DECIMAL 值”。

所有字段都是VARCHAR。 我尝试使用 CHAR 中的演员表,但一无所获。 我注意到,如果我从 WHERE 子句中删除 AND 运算符,警告就会消失,所以我认为这不是小数值的问题。

  INSERT INTO `BOP_APPENDICI`(RAMO, RISCHIO, PREMIO)            
SELECT 
substring_index(substring_index(nomefilepdf, '_', 10), '_', -1) as ramo_view,
substring_index(substring_index(nomefilepdf, '_', 11), '_', -1) as rischio_view,
substring_index(substring_index(nomefilepdf, '_', 12), '_', -1) as premio_view
FROM `BOP_importazioneAppendici
WHERE 
substring_index(substring_index(nomefilepdf, '_', 4), '_', -1) IN 
    (SELECT TIPO_DOC FROM BOP_DOMINIO_DOCUMENTI)
AND NOT EXISTS (
    SELECT 1 
    FROM BOP_DOMINIO_RAMO_RISCHIO d
    WHERE 
        d.ramo = substring_index(substring_index(nomefilepdf, '_', 10), '_', -1)
        AND d.rischio = substring_index(substring_index(nomefilepdf, '_', 11), '_', -1)
)
AND cast(substring_index(substring_index(nomefilepdf, '_', 12), '_', -1) as int) = 0
sql mariadb warnings
1个回答
0
投票

在最后一行中,您将其转换为整数:

AND cast(substring_index(substring_index(nomefilepdf, '_', 12), '_', -1) as int) = 0

如果我理解正确,通过删除这个 AND 子句,您不会收到错误,因为它不再尝试将 char 转换为 int 。

您确定要转换为整数的列仅由数字组成吗?

© www.soinside.com 2019 - 2024. All rights reserved.