0

これは、SQL の専門家にとっては簡単な質問かもしれません: データベース (1 つのフィールドvarchar(30)) を使用した次のクエリで、異なる結果が得られる可能性があるのはどうしてでしょうか?

SELECT field FROM table WHERE field=1234;

戻り値:

1234
1234

SELECT field FROM table WHERE field="1234";

戻り値:

1234

したがって、最初のクエリは結果 1234 を 2 回返すように見えますが、2 番目のクエリは 1 回だけ結果を返します。データベース内のデータは不明です。さらに厄介なことに、データベースのフィールド「フィールド」には一意のキーがあります。

ありがとう!

4

2 に答える 2

1

1 つの可能性は、フィールドが文字列で、2 つの行にこれらの値が含まれていることです。

1234
1234.0

これらは両方とも、数値の 1234 に当てはまります。

http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html

于 2013-03-24T08:05:57.840 に答える
0

フィールド値は重複した値を受け入れないため、最初のケース「1234」が正しいものです。

バグやシステム エラーがないことを確認するには:

値がほとんどない新しいテーブルに同じことを適用してみてください。列を一意にし、 "" を使用して "" を使用せずにクエリを適用します。

結果は、"" を含む最初のケースでのみ 1 つの値を返す必要があります。

よろしく

于 2013-03-24T07:58:41.843 に答える