sqlite:别名列名不能包含点“。”

时间:2011-03-07 22:15:00

标签: sql sqlite

(抱歉我的英语不好)

如果您在sqlite数据库上尝试此选择操作:

  

SELECT列AS'别名1'FROM表;

您获得了预期的列名称:

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

但如果您的别名包含点“。” ...你得到一个错误的列名:

  

SELECT列AS'alias.1'FROM table;

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

(列后面的所有点都在列名中省略)

哇... 这很奇怪......

任何人都可以帮助我吗?

非常感谢

更新

也许这只是SQLiteStudio(我正在测试我的查询的软件)和QT中的一个错误(他们都不期望别名中的点,但sqlite会这样做)

5 个答案:

答案 0 :(得分:10)

将您的别名用双引号括起来。

SELECT 'test' AS "testing.this"

输出:

| testing.this |
  test

<强>更新 双引号用于在SQL中包含标识符,而不是单引号。单引号仅适用于字符串。在这种情况下,您正在尝试确保“testing.this”按原样使用,而不是混淆为testing.this(testing table this列)。

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

答案 1 :(得分:2)

使用反引号

SELECT column AS `alias.1` FROM table;

或其他答案的双引号(ANSI标准)

SELECT column AS "alias.1" FROM table;

在SQLite Manager for FireFox中验证了

答案 2 :(得分:1)

绝对正常工作:

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>

答案 3 :(得分:1)

如果您正在使用SQLite 3,则以下查询可以正常使用用于Alias列名称的各种类型。

查看查询下面的结果:

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

答案 4 :(得分:0)

我找到了“修复”......

  

SELECT列AS'.alias.1'FROM   表;

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

刚开始的另一个点......

当然我不喜欢这个解决方案...... 任何其他想法??