From ae9cc0e2d7d322433c29c63891e8f8ba0f63171e Mon Sep 17 00:00:00 2001 From: Ti Chi Robot Date: Mon, 15 May 2023 16:35:17 +0800 Subject: [PATCH] Add note about SELECT CAST(MeN AS CHAR) incompatibility (#13518) (#13558) --- data-type-numeric.md | 4 ++++ functions-and-operators/cast-functions-and-operators.md | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/data-type-numeric.md b/data-type-numeric.md index 1bfa46111cdf9..26c4dfb41d50a 100644 --- a/data-type-numeric.md +++ b/data-type-numeric.md @@ -146,6 +146,10 @@ DOUBLE PRECISION [(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL > > As in MySQL, the `DOUBLE` data type stores approximate values. For values such as currency, it is recommended to use the `DECIMAL` type instead. +> **Note:** +> +> When TiDB converts a double-precision floating-point number represented in scientific notation to the `CHAR` type, the result is displayed inconsistently with that in MySQL. See [Cast functions and operators](/functions-and-operators/cast-functions-and-operators.md) for details. + ## Fixed-point types TiDB supports all the MySQL floating-point types, including DECIMAL, and NUMERIC. For more information, [Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC in MySQL](https://dev.mysql.com/doc/refman/5.7/en/fixed-point-types.html). diff --git a/functions-and-operators/cast-functions-and-operators.md b/functions-and-operators/cast-functions-and-operators.md index 8642d90ff7f48..1d82c6e4b887d 100644 --- a/functions-and-operators/cast-functions-and-operators.md +++ b/functions-and-operators/cast-functions-and-operators.md @@ -5,7 +5,9 @@ summary: Learn about the cast functions and operators. # Cast Functions and Operators -TiDB supports all of the [cast functions and operators](https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html) available in MySQL 5.7. +Cast functions and operators enable conversion of values from one data type to another. TiDB supports all of the [cast functions and operators](https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html) available in MySQL 5.7. + +## List of cast functions and operators | Name | Description | | ---------------------------------------- | -------------------------------- | @@ -13,4 +15,6 @@ TiDB supports all of the [cast functions and operators](https://dev.mysql.com/do | [`CAST()`](https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast) | Cast a value as a certain type | | [`CONVERT()`](https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert) | Cast a value as a certain type | -Cast functions and operators enable conversion of values from one data type to another. +> **Note:** +> +> TiDB and MySQL display inconsistent results for `SELECT CAST(MeN AS CHAR)` (or its equivalent form `SELECT CONVERT(MeM, CHAR)`), where `MeN` represents a double-precision floating-point number in scientific notation. MySQL displays the complete numeric value when `-15 <= N <= 14` and the scientific notation when `N < -15` or `N > 14`. However, TiDB always displays the complete numeric value. For example, MySQL displays the result of `SELECT CAST(3.1415e15 AS CHAR)` as `3.1415e15`, while TiDB displays the result as `3141500000000000`.