MySQL にカラム名だけがあり、値に等しい箇所がないのはなぜですか? これは構文エラーではありません
P粉481815897
P粉481815897 2023-09-16 10:37:20
0
1
676

なぜこのクエリは構文エラーではないのでしょうか?私は SQL Server の経験があるので、本当に驚きました。

my_table WHERE id から *

を選択します

値があることを検証すると思いましたが、動作に一貫性がありません。 id を使用すると、 id を持つ場所が返されますが、 name を使用すると何も返されません。

https://www.db-fiddle.com/f/enWGyAW4BtLC64PVzkbTVK/0

P粉481815897
P粉481815897

全員に返信(1)
P粉511896716

MySQL には、標準 ANSI SQL に準拠しない動作がいくつかあります。この場合、MySQL は整数のゼロ値を false として扱い、ゼロ以外の整数値を true として扱います。標準 SQL では、整数はブール値と同じではありませんが、MySQL では同じです。

クエリ WHERE id を実行すると、id ​​ 0 の行が返されます。

クエリ WHERE name を実行すると、文字列が整数として評価されます。つまり、先頭の数字 (存在する場合) の数値が取得され、後続の数字以外の文字は無視されます。先頭に数字がない場合、文字列の整数値は 0 になります。

クエリ WHERE name を実行すると、その列に格納されている文字列の先頭にゼロ以外の数字がある場合にのみ行が返されます。あなたの例 'outro' には数字以外しか含まれていないため、値はゼロであり、条件を満たすことができません。

MySQL は設計どおりに動作しますが、これは標準 SQL ではありません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート