2011-03-07 32 views
2

(對不起我的英文不好)sqlite:別名列名不能包含一個點「。」

如果你嘗試過的SQLite數據庫這個選擇操作:

選擇列「別名1」 FROM表;

你獲得預期的列名:

alias 1 
-------- 
result 1 
result 2 

但如果你的別名包含一個圓點 「」 ...你得到一個錯誤的列名:

SELECT column AS'alias.1'FROM table;

1 
-------- 
result 1 
result 2 

(所有的點落後於列名中省略)

哇... 這很奇怪......

任何人都可以幫我嗎?

非常感謝你

UPDATE:

也許它只是在SQLiteStudio(其中我測試我的查詢軟件)中的錯誤和QT(他們都沒有想到在點別名,但sqlite的)

回答

7

用雙引號括起你的別名。

SELECT 'test' AS "testing.this" 

輸出:

| testing.this | 
    test 

更新時間: 雙引號用於括標識符SQL,而不是單引號。單引號僅用於字符串。在這種情況下,您試圖確保「testing.this」按原樣使用,不會混淆爲testing.this(testingthis列)。

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

+0

沒有......這不作品。 SQlite使用單引號。 – 2011-03-07 22:23:26

+0

嗨,工作正常。 :)我會將輸出添加到我的答案。 – 2011-03-07 22:25:20

+0

它不適用於sqlite – 2011-03-07 22:29:46

1

使用反引號

每對方的回答
SELECT column AS `alias.1` FROM table; 

或雙引號(ANSI標準)

SELECT column AS "alias.1" FROM table; 

無論是在SQLite的經理火狐

+0

不......那工作..放在這種方式'alias.1' ...並且你沒有得到預期的列名... – 2011-03-07 22:26:37

+0

我認爲反引號是一個MySQL擴展到雙引號用法?SQL標準是雙引號是不是? – 2011-03-07 22:27:53

+0

@Kevin都工作。 @Javi - 你在哪裏運行查詢? – RichardTheKiwi 2011-03-07 22:28:25

0

我已經驗證發現了一個「修復」...

SELECT column AS'.alias。1'從 表;

alias.1 
-------- 
result 1 
result 2 

在開始時只是一個點...

當然

我不喜歡這種解決方案 任何其他的想法?

0

絕對正常工作:

C:\Windows>sqlite3.exe 
SQLite version 3.7.8 2011-09-19 14:49:19 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> .mode column 
sqlite> .headers on 
sqlite> SELECT 'hello' AS 'alias.1'; 
alias.1 
---------- 
hello 
sqlite> 
0

如果您使用SQLite的3那麼下面的查詢工作只是用於別名列名各類罰款。

看到查詢結果如下:

select '1' as 'my.Col1', '2' as "my.Col2", '3' as [my.Col3], '4' as [my Col4] , '5' as 'my Col5' 

enter image description here