Warum verursacht das Konvertieren des Datentyps von Float in Zeichenfolge unterschiedliche Ergebnisse, wenn die gleiche MySql

MySQL DBMS-Forum
Anonymous
 Warum verursacht das Konvertieren des Datentyps von Float in Zeichenfolge unterschiedliche Ergebnisse, wenn die gleiche

Post by Anonymous »

Frage: < /p>

Warum verursacht das Konvertieren des Datentyps von Float zu String unterschiedliche Ergebnisse bei der Ausführung derselben Abfrage? /> < /blockquote>
Der Funktionscode lautet wie folgt: < /p>

Code: Select all

DELIMITER //

CREATE FUNCTION F_AUTO_DIGIT_CONV (

`i_num` DECIMAL(30,6),

`i_point` int
) RETURNS VARCHAR(50)

BEGIN

DECLARE v_colname VARCHAR(50);

-- Handling NULL input

IF i_num IS NULL THEN

RETURN NULL;

END IF;

-- Automatically convert units according to numerical value

SET v_colname = (CASE

WHEN i_num  -1000000000 AND i_num  -1000000 AND i_num < 1000000 THEN

CAST(truncate(i_num, i_point) AS CHAR)

WHEN i_num >= 1000000 AND i_num < 1000000000 THEN

CONCAT(CAST(truncate(i_num / 1000000, i_point) AS CHAR), 'Million')

WHEN i_num >= 1000000000 THEN

CONCAT(CAST(truncate(i_num / 1000000000, i_point) AS CHAR), 'Billion') -- Fix spelling errors

ELSE

CAST(ROUND(i_num, i_point) AS CHAR)

END);

-- Handles leading or negative dot cases (e.g. ".5" -> "0.5" / "-.5" -> "-0.5")

RETURN (CASE

WHEN v_colname LIKE '.%' THEN CONCAT('0', v_colname)

WHEN v_colname LIKE '-.%' THEN REPLACE(v_colname, '-.', '-0.')

ELSE v_colname

END);

END//

DELIMITER ;
< /code>
Die Ergebnisse werden wie folgt verglichen (das gewünschte Ergebnis ist das zweite, aber die Funktion gibt einen Fehler zurück) < /p>
Funktion Ausführung (Float -Typ): < /p>
select F_AUTO_DIGIT_CONV(122046010.4900,3)
Result :0.12200000000Billion
Direkte Anfrage (in den Zeichenfolge -Typ konvertieren):

Code: Select all

select CONCAT(CAST(truncate(122046010.4900 / 1000000000, 3) AS CHAR), ‘Billion’)
Result :0.122 Million
Warum sind die Ergebnisse dieser 2 -mal unterschiedlichen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post