我有一个看起来像的表:
ATTRIBUTE1 | ATTRIBUTE2
weight: 190| height: 175
ctr: 400 | dmd: 19
是否可以对这些领域进行比较操作?
就像,如果我想找到体重小于 200 的每个人,那么语法会是什么样子?如果字段中没有文本,我认为查询将如下所示:
SELECT * FROM mytable WHERE attribute1 < '200'
但由于该字段具有定义文本“重量:”,我不太确定如何执行此操作。
我有一个看起来像的表:
ATTRIBUTE1 | ATTRIBUTE2
weight: 190| height: 175
ctr: 400 | dmd: 19
是否可以对这些领域进行比较操作?
就像,如果我想找到体重小于 200 的每个人,那么语法会是什么样子?如果字段中没有文本,我认为查询将如下所示:
SELECT * FROM mytable WHERE attribute1 < '200'
但由于该字段具有定义文本“重量:”,我不太确定如何执行此操作。
相当
CAST(SUBSTRING(attribute1, INSTR(attribute, ': ') AS SIGNED)
因为该值包含开头的字符串。
基本上你这样做:
找到 ': ' 的索引并将其用作值的子字符串(跳过所有内容直到实际数字)。然后你把它转换成一个 Int
(也许您需要在 INSTR 中添加 +1。我不确定,因为我这里没有 mysql 客户端
where cast(substring(ATTRIBUTE1, instr(ATTRIBUTE1, ': ')+1 ) as unsigned) <200
选择:
where cast(replace(Field_2, 'weight: ', '') as unsigned) > 180