0

Unixコマンドラインsqlite3コマンドツールを使用して、小さなSQLiteデータベースに取り組んでいます。私のスキーマは次のとおりです。

sqlite> .schema
CREATE TABLE status (id text, date integer, status text, mode text);

ここで、すべてのエントリの列「モード」を文字列「ステータス」に設定したいと思います。ただし、これを入力すると:

sqlite> UPDATE status SET mode="Status";

列「モード」を文字列「ステータス」に設定する代わりに、すべてのエントリを列「ステータス」に現在ある値に設定します。代わりに、次のように入力すると、期待される動作が行われます。

sqlite> UPDATE status SET mode='Status';

これは正常な動作ですか?

4

2 に答える 2

1

これはFAQでもあります:-

WHERE 句の式 column1="column1" が機能しません。column1 の値が "column1" である行だけでなく、テーブルのすべての行が返されます。

SQL では、文字列リテラルを二重引用符ではなく単一引用符で囲みます。これは、SQL 標準が要求するものです。WHERE 句の式は次のようになります: column1='column2'

SQL では、特殊文字を含むかキーワードである識別子 (列またはテーブル名) を二重引用符で囲みます。したがって、二重引用符は識別子名をエスケープする方法です。したがって、明らかに常に真である column1=column1 と同等の column1="column1" と言うとき。

http://www.sqlite.org/faq.html#q24

于 2013-01-08T12:02:47.543 に答える
0

はい、それは SQL では正常です。

文字列値には一重引用符が使用されます。二重引用符は、識別子 (テーブル名や列名など) に使用されます。(ドキュメントを参照してください。)

于 2013-01-08T11:59:32.447 に答える