@freeeeez

Как получить только цифры из строки MySQL?

У меня в таблице есть столбец с расстояниями. Значения там, '99 км', '2 100 км', '17 083 км' и т.п. Как составить запрос, чтобы получить соответственно 99, 2100, 17083?
  • Вопрос задан
  • 1184 просмотра
Решения вопроса 1
@Fortop
Tech/Team lead
Не хранить в столбце значение и размерность.
Вообще.
Никогда.

Если вам нужно хранить расстояние, то создаете 2 столбца
Значение ,  Размерность
100.25, км
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
DarkRaven
@DarkRaven
разработка программного обеспечения
В своем решение я применил такую функцию:
CREATE FUNCTION digits( str CHAR(32) ) RETURNS CHAR(32)
BEGIN
  DECLARE i, len SMALLINT DEFAULT 1;
  DECLARE ret CHAR(32) DEFAULT '';
  DECLARE c CHAR(1);

  IF str IS NULL
  THEN 
    RETURN "";
  END IF;

  SET len = CHAR_LENGTH( str );
  REPEAT
    BEGIN
      SET c = MID( str, i, 1 );
      IF c BETWEEN '0' AND '9' THEN 
        SET ret=CONCAT(ret,c);
      END IF;
      SET i = i + 1;
    END;
  UNTIL i > len END REPEAT;
  RETURN ret;
END


И ее использовал в запросе:

SELECT digits(t.somecol) FROM tablename
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы