私は奇妙に見えるものにぶつかったが、私はsqlite3を悪用するかもしれない。sqliteの列名の引用(機能やバグ)
create table t (v[0] text);
insert into t values('aa');
select * from t;
v
--------
aa
pragma table_info('t')
cid name type no dfl pk
-------- -------- ------ -- --- ----------
0 v 0 0 0
.schema t;
CREATE TABLE t (v[0] text);
列名が正しく、スキーマに入力され、それが「誤って」静かに任意のレポートせずに列名を切り捨てる者選択/作成によって処理されると思ったように見えます。
ここで、このような奇妙な列名をスキーマに引用符で入力する必要があると思うかもしれませんが、私はそれを行う方法を見つけることができません。スキーマがよさそうだ
create table u ('v[0]' text);
insert into u values('aa');
select * from u;
v[0]
--------
aa
$ q pragma table_info('u')
cid name type no dfl pk
-------- -------- ------ -- --- ----------
$ v[0] text 0 0
$ q .schema u
CREATE TABLE u ('v[0]' text);
万歳は、SELECT *は幸せですが、今、私はこのコラムの使用方法については動けなくなります。
select v[0] from u;
SQL error 1 : no such column: v
select 'v[0]' from u
'v[0]'
----------
v[0]
select [v[0]] from u
SQL error 1 : unrecognized token: "]"
私は実際に列名に[]持っているし、私はすべての助言のために
ありがとう(列名が私の場合に生成された)任意のdoccoは、我々はできないと言っ表示されません。 乾杯 ファイ
どのようにあなたがあなたのカラム名は、角括弧 'V [0]'を含有しなければならない状況にあることも可能です: は引用符の正しい方法は、二重引用符を使用することですか? – Joe
私のカラム名が生成され、 - > []を持つことができます。これまでエンコードを試みたことはありませんでしたが、私はエンコーディング(mangling)のどのような処理が必要なのだろうかと思っています... – Phi