我在使用以下 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
在最后一行中,您将其转换为整数:
AND cast(substring_index(substring_index(nomefilepdf, '_', 12), '_', -1) as int) = 0
如果我理解正确,通过删除这个 AND 子句,您不会收到错误,因为它不再尝试将 char 转换为 int 。
您确定要转换为整数的列仅由数字组成吗?