Код ошибки: 1292 - усечено неверное значение DOUBLE: '-'

SET @newNum = IF(
    RIGHT("-600.00",1) REGEXP '^[-]' = '-',
    REPLACE("-600.00",",",""),
    -1*REPLACE(REPLACE("-600.00",",",""),"-","")
);

Я продолжаю получать усеченное неверное значение DOUBLE: '-' при выполнении этой строки, кто-нибудь знает, что вызывает это?

1 ответ

Решение

REGEXP возвращает 1 или 0 в зависимости от того, есть совпадение или нет. Сравнивая результат с - неверно, вы можете сделать это вместо этого:

DECLARE @oldNum VARCHAR(10);
DECLARE @newNum VARCHAR(10);
SET @oldNum = '600.00-';
SET @newNum = IF(
    RIGHT(@oldNum, 1) = '-',
    CONCAT('-', REPLACE(REPLACE(@oldNum, ',', ''), '-', '')),
                        REPLACE(@oldNum, ',', '')
);
SELECT @oldNum, @newNum
Другие вопросы по тегам