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 而不带括号,在这种情况下,默认值用于最大位数和小数位数。

因此 DECIMALDECIMAL(10,0) 相同。

MariaDB 文档对此进行了更正式的描述,使用 EBNF 语法,其中方括号用于显示封闭的部分是可选的。

所以 DECIMAL[(M[,D])] 实际上是说 '(...)' 部分是可选的,而且 ',D' 部分也是。所以

DECIMAL
DECIMAL(10)
DECIMAL(10,0)

都是有效的变体,并且都与 MySQL 和 MariaDB 一样工作。

只需在 MariaDB 上使用您的 MySQL 代码不变,它将在那里正常工作。

Visual Studio 2015 和我的 MYSQL 更新最终出现问题。 我卸载:

  1. Mysql 对于 Visual Studio 1.2.8
  2. Mysql 连接器网络 8.0.16

并安装:

  1. Mysql 对于 Visual Studio 2.0.5 m4
  2. Mysql 连接器网 6.9.9

一切都恢复正常了。 谢谢