0

テーブルに対する簡単なクエリがあります。

SELECT * from delivery_receipts WHERE siid='';

このテーブルの一意のキーは drid です (この質問には関係ありません)。対象の列 ( siid) はint(11)フィールドであり、インデックスがなく、一意ではありません...

とにかく私の問題は、これを実行すると、mysql が次のすべての行を返すことです。

SELECT drid,siid from delivery_receipts WHERE siid='0'

もちろん、siid指定して検索すると、一致する行のみsiidが表示されます....

したがって、「」を検索すると、テーブルが「0」を持つすべての行で一致を返しているようです

4

1 に答える 1

1

Select-Statement はサーバーによって解釈されているため、データを char から int に変換する必要があることが認識されます。また、int のデフォルト値のため、指定した空の char は 0 に変換されます。

したがって、値のない(NULL)すべての行を取得する場合は、次のことを行う必要があります

SELECT * from delivery_receipts WHERE siid IS NULL;

編集

SELECT * from delivery_receipts WHERE ( siid = '$siid' and '$siid' <> '' ) OR ( '$siid' = '' AND siid IS NULL );
于 2012-11-04T12:23:59.783 に答える