0

我有一个看起来像的表:

ATTRIBUTE1 | ATTRIBUTE2
weight: 190| height: 175
ctr: 400   | dmd: 19

是否可以对这些领域进行比较操作?

就像,如果我想找到体重小于 200 的每个人,那么语法会是什么样子?如果字段中没有文本,我认为查询将如下所示:

SELECT * FROM mytable WHERE attribute1 < '200'

但由于该字段具有定义文本“重量:”,我不太确定如何执行此操作。

4

2 回答 2

3

相当

CAST(SUBSTRING(attribute1, INSTR(attribute, ': ') AS SIGNED)

因为该值包含开头的字符串。

基本上你这样做:

找到 ': ' 的索引并将其用作值的子字符串(跳过所有内容直到实际数字)。然后你把它转换成一个 Int

(也许您需要在 INSTR 中添加 +1。我不确定,因为我这里没有 mysql 客户端

于 2012-04-18T19:58:58.423 回答
2
where cast(substring(ATTRIBUTE1, instr(ATTRIBUTE1, ': ')+1 ) as unsigned) <200

选择:

where cast(replace(Field_2, 'weight: ', '') as unsigned) > 180
于 2012-04-18T20:03:38.247 回答