MariaDB, конвертировать VARCHAR в DECIMAL - PullRequest
0 голосов
/ 21 июня 2019

У меня есть столбец с VARCHAR. Я хочу преобразовать в DECIMAL для использования после запроса в моем проекте vb. Но я не нахожу правильный синтаксис.

Я пытаюсь использовать как mysql:

SELECT 
CAST(REPLACE(Espesor,',','.') AS DECIMAL (10,2)) AS TT
FROM Produccion
WHERE id = 153392

а у меня 5,5 (работает нормально). Но под MariaDB я синтаксис другой. Это как

DECIMAL[(M[,D])]

Я попробовал следующий код:

SELECT 
CAST(REPLACE(Espesor,',','.') AS DECIMAL[(10[,2])]) AS TT
FROM Produccion
WHERE id = 153392

и у меня ошибка около [(10 [, 2])]) AS TT

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Это, наконец, проблема с Visual Studio 2015 и моими обновлениями MYSQL.Удаляю:

  1. Mysql для Visual Studio 1.2.8
  2. Mysql Connector Net 8.0.16

И устанавливаю:

  1. Mysql для Visual Studio 2.0.5 m4
  2. Mysql Connector Net 6.9.9

И все снова работает.Спасибо

0 голосов
/ 21 июня 2019

Синтаксис MariaDB SQL не отличается, это всего лишь синтаксис документации.

И MySQL, и MariaDB позволяют объявлять столбец как DECIMAL без скобок, в этом случае используются значения по умолчаниюдля максимального количества цифр и количества десятичных знаков.

Так что DECIMAL - это то же самое, что и DECIMAL(10,0).

Документация MariaDB является более формальной для описания этого с использованием синтаксиса EBNF,где квадратные скобки используются, чтобы показать, что заключенные части являются необязательными.

Таким образом, DECIMAL[(M[,D])] фактически говорит, что часть '(...)' является необязательной, и, кроме того, часть ', D'также является.Так что

DECIMAL
DECIMAL(10)
DECIMAL(10,0)

- все допустимые варианты, и все работают одинаково с MySQL и MariaDB.

Просто используйте ваш код MySQL без изменений на MariaDB, и он будет прекрасно работать там.

...