3

アップデートについてMySQLドキュメントを閲覧していました。UPDATE構文を参照してください。構文が

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

このステートメントを実行したとき

UPDATE SampleTB
SET NAME = '123' AND Address = '456'
WHERE ID = 1;

SQLフィドルのデモンストレーションリンクについては、こちらをご覧ください

クエリは正常に実行され、の値はNameでした0。クエリで構文エラーが発生することを予期していました。

エラーが発生しなかった理由を誰かに説明してもらえますか?そして、なぜ列の新しい値はそうではzeroなかったの123ですか?

4

1 に答える 1

10
SET NAME = '123' AND Address = '456'

次のように解析されます:

SET NAME = ('123' AND (Address = '456'))

ANDこれは、文字列とブールオペランドの1つの比較とブールです。

したがって、現在の行のAddress列の値を取得し、それを文字列と比較し、比較の結果をlike'456'の2番目のオペランドとして使用します。AND'123' AND false

于 2012-12-30T11:45:09.863 に答える