begemot_sun
@begemot_sun
Программист в душе.

MySQL: Как определить является ли значение числом?

См. сабж.

Т.е. мне нужна некоторая функция (выражение), которая возвращает 1 если переданный аргумент является числом, иначе 0

Самое простое что пришло на ум:
SELECT CAST("123.1123" AS DECIMAL(65,5)) = "123.1123" -- выдаст 1
SELECT CAST(123.1123 AS DECIMAL(65,5)) = 123.1123 -- выдаст 1
SELECT CAST("фыв" AS DECIMAL(65,5)) = "фыв" -- выдаст 0

А существует ли возможность решить туже самую задачу без CAST/CONVERT

В мануале ничего не нашел. Может плохо искал?

Спасибо.
  • Вопрос задан
  • 3755 просмотров
Решения вопроса 1
Вариант А. SELECT CONCAT( '', column1 * 1) = column1
Неправильно обработает нестандартные форматы чисел типа 156. (оканчивается на точку), 1e3, 1.25e5

Вариант Б. Регулярными выражениями в лоб: SELECT column1 REGEXP('(^[0-9]+$)');
Тут даже числа с десятичной точкой не пройдут, правда.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT '1234.464' REGEXP '^[0-9]+(\.[0-9]+)?$'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы