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
答案 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可以轻松实现这一目标。