Преобразовать строку с операцией в int с помощью SQL-запроса - PullRequest
1 голос
/ 21 марта 2019

persons - это поле для крошечного текста, которое может содержать «4 + 2», «4 + 2», «4 +2», «5» или «» и т. Д. Я хотел бы выбрать и int как 6, 6, 6, 5 и 0 из этой таблицы MySQL 5.6.

Попробовал безуспешно:

SELECT CAST(persons AS INT) FROM Table
SELECT CONVERT(INT, persons ) FROM Table

Ответы [ 3 ]

3 голосов
/ 21 марта 2019

Если + является единственным оператором и появляется один раз, то:

select (case when col like '%+%'
             then substring_index(col, '+', 1) + substring_index(replace(col, ' ', ''), '+', -1)
             else col + 0
        end) as added_value
1 голос
/ 21 марта 2019

использование SUBSTRING_INDEX

 select SUBSTRING_INDEX(col  , "+", 1)+ SUBSTRING_INDEX(col  , "+", -1) as col1
   from cte where col like '%+%'
  union all
  select SUBSTRING_INDEX(col  , "+", 1) from cte where col not like '%+%'

выход

  col1
    6
    6
    6
    5

верхнее решение будет работать только для ваших образцов данных демонстрационная ссылка

0 голосов
/ 21 марта 2019

Какую базу данных вы используете?Возможно, вам придется использовать что-то конкретное дБ.например, в oracle вы можете сделать:

select dbms_aw.eval_number ('4+2') from dual

Он вернет 6.

Вообще-то - используя динамический SQL, вы легко можете достичь этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...