0

次のようなテーブルがあります。

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

これらのフィールドで比較操作を行うことは可能ですか?

たとえば、重みが 200 未満のすべての人を見つけたい場合、構文はどのようになりますか? フィールドにテキストがない場合、クエリは次のようになると思います。

SELECT * FROM mytable WHERE attribute1 < '200'

しかし、フィールドには定義テキスト "weight:" があるため、これを行う方法がよくわかりません。

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 に答える