使用SQL查询将带有操作的字符串转换为int

时间:2019-03-21 16:59:18

标签: mysql sql

int是一个tinytext字段,可以包含“ 4 + 2”,“ 4 + 2”,“ 4 +2”,“ 5”或“”等。 我想从该MySQL 5.6表中选择SELECT CAST(persons AS INT) FROM Table SELECT CONVERT(INT, persons ) FROM Table ,例如6、6、6、5和0。

尝试不成功:

lower

3 个答案:

答案 0 :(得分:3)

如果+是唯一的运算符,并且它出现一次,则:

select (case when col like '%+%'
             then substring_index(col, '+', 1) + substring_index(replace(col, ' ', ''), '+', -1)
             else col + 0
        end) as added_value

答案 1 :(得分:1)

使用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

上层解决方案仅适用于您的示例数据 demo link

答案 2 :(得分:0)

您正在使用哪个数据库?您可能需要使用特定于数据库的东西。例如在oracle中,您可以执行以下操作:

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

它将返回6。

通常来说-使用动态SQL可以轻松实现这一目标。