2012-05-01 7 views
4

問題のあるスクリプトが実行されているため、真っ直ぐ上にない値を含むすべての行を選択する必要があります。これはどうすればいいですか? ISSTRINGはGoogleの検索にありましたが、ISSTRINGが存在しないと言うエラーが表示されます。 :(MySQLのステートメントの選択列が数字ではない

これまでのところ私は混乱しました:まったく運がよければ

SELECT id, area, city FROM `homes` WHERE ISSTRING(`area`) OR ISSTRING(`city`) 

...

+0

あなたは正規表現を経由してそれを行うことができます - 。。http://dev.mysql.com/doc/refman/5.1/en/ regexp.html –

+6

参照:http://stackoverflow.com/q/75704/is-a-value-is-an-integer-in-mysqlのように見てください。あなたは 'NOT 'を追加するだけです。 – bfavaretto

+1

'area'と' city'が整数型のみであると仮定されている場合は、テーブル定義を変更して整数(例えばsmallint、bigint、intなど)を許可します。すべての非整数値は0に変更されます。 –

答えて

6

regexpは動作しますが、私はどうなることは、ABS(かどうかをチェックしている)が等しいですゼロフィールドにゼロではない私は、これは正規表現よりも高速になると思う

SELECT id, area, city FROM `homes` WHERE (abs(area) = 0 AND area != '0') OR (abs(city) = 0 AND city != '0') 
+0

しかし、abs()は小数点に何をしますか? –

+0

システムには小数点がありませんので、問題はありません。 – jeffkee

+0

'abs(area)= 0'鮮やかでシンプル!ありがとう –

関連する問題