Конвертировать VARCHAR в числовой в MySQL - PullRequest
0 голосов
/ 23 октября 2019

Ошибка преобразования типа данных varchar в числовое число.

Мне нужно преобразовать индийский формат запятой в значения и сохранить в базе данных.

SET @mainamount=(SELECT Isnull(Format(Cast(Sum(receipt_amount) 
AS MONEY), 'N', 'en-in'), 0) AS amount 
FROM   tbl_fee_receiptmaster 
WHERE  org_id = @org_Id 
AND academic_id = @academic_Id 
AND student_id = @studentId 
AND duration_id = 1 
AND Cast(receipt_date AS DATE) = Cast(@date AS DATE) 
AND type_id = @typeid 
AND receipt_code = @receiptCode 
AND receipt_cancel = 0) 

1 Ответ

0 голосов
/ 23 октября 2019

Во-первых, select не требуется для этого. И я предпочитаю от COALESCE() до ISNULL() (COALESCE() - это стандартный SQL).

@mainamount = coalesce(format(cast(sum(receipt_amount) as money), 'N', 'en-in'), 0)

Проблема в том, что 0 указывает, что тип возвращаемого значения - число ,Когда возникает конфликт типов, обычно выбирается более ограничительный тип, то есть строки преобразуются в числа и даты, когда нужно выбрать.

Но FORMAT() возвращает строку. Это можно исправить, просто указав в качестве альтернативного значения строку:

@mainamount = coalesce(format(cast(sum(receipt_amount) as money), 'N', 'en-in'), '0')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...