MariaDB,将 VARCHAR 转换为 DECIMAL
MariaDB, Convert VARCHAR to DECIMAL
我有一个包含 VARCHAR 的列,我想转换为 DECIMAL,以便在我的 vb 项目的查询中使用。但是我没有找到正确的语法。
我先尝试 mysql 使用 :
SELECT
CAST(REPLACE(Espesor,',','.') AS DECIMAL (10,2)) AS TT
FROM Produccion
WHERE id = 153392
我有 5,5(工作正常)。
但是在 MariaDB i 下语法是不同的。是这样的
DECIMAL[(M[,D])]
我试过以下代码:
SELECT
CAST(REPLACE(Espesor,',','.') AS DECIMAL[(10[,2])]) AS TT
FROM Produccion
WHERE id = 153392
我在 [(10[2])]) AS TT
附近有一个错误
MariaDB SQL 语法没有不同,只是文档语法不同。
MySQL 和 MariaDB 都允许将列声明为 DECIMAL
而不带括号,在这种情况下,默认值用于最大位数和小数位数。
因此 DECIMAL
与 DECIMAL(10,0)
相同。
MariaDB 文档对此进行了更正式的描述,使用 EBNF 语法,其中方括号用于显示封闭的部分是可选的。
所以 DECIMAL[(M[,D])]
实际上是说 '(...)' 部分是可选的,而且 ',D' 部分也是。所以
DECIMAL
DECIMAL(10)
DECIMAL(10,0)
都是有效的变体,并且都与 MySQL 和 MariaDB 一样工作。
只需在 MariaDB 上使用您的 MySQL 代码不变,它将在那里正常工作。
Visual Studio 2015 和我的 MYSQL 更新最终出现问题。
我卸载:
- Mysql 对于 Visual Studio 1.2.8
- Mysql 连接器网络 8.0.16
并安装:
- Mysql 对于 Visual Studio 2.0.5 m4
- Mysql 连接器网 6.9.9
一切都恢复正常了。
谢谢
我有一个包含 VARCHAR 的列,我想转换为 DECIMAL,以便在我的 vb 项目的查询中使用。但是我没有找到正确的语法。
我先尝试 mysql 使用 :
SELECT
CAST(REPLACE(Espesor,',','.') AS DECIMAL (10,2)) AS TT
FROM Produccion
WHERE id = 153392
我有 5,5(工作正常)。 但是在 MariaDB i 下语法是不同的。是这样的
DECIMAL[(M[,D])]
我试过以下代码:
SELECT
CAST(REPLACE(Espesor,',','.') AS DECIMAL[(10[,2])]) AS TT
FROM Produccion
WHERE id = 153392
我在 [(10[2])]) AS TT
附近有一个错误MariaDB SQL 语法没有不同,只是文档语法不同。
MySQL 和 MariaDB 都允许将列声明为 DECIMAL
而不带括号,在这种情况下,默认值用于最大位数和小数位数。
因此 DECIMAL
与 DECIMAL(10,0)
相同。
MariaDB 文档对此进行了更正式的描述,使用 EBNF 语法,其中方括号用于显示封闭的部分是可选的。
所以 DECIMAL[(M[,D])]
实际上是说 '(...)' 部分是可选的,而且 ',D' 部分也是。所以
DECIMAL
DECIMAL(10)
DECIMAL(10,0)
都是有效的变体,并且都与 MySQL 和 MariaDB 一样工作。
只需在 MariaDB 上使用您的 MySQL 代码不变,它将在那里正常工作。
Visual Studio 2015 和我的 MYSQL 更新最终出现问题。 我卸载:
- Mysql 对于 Visual Studio 1.2.8
- Mysql 连接器网络 8.0.16
并安装:
- Mysql 对于 Visual Studio 2.0.5 m4
- Mysql 连接器网 6.9.9
一切都恢复正常了。 谢谢