(抱歉我的英语不好)
如果您在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会这样做)
答案 0 :(得分:10)
将您的别名用双引号括起来。
SELECT 'test' AS "testing.this"
输出:
| testing.this |
test
<强>更新强>
双引号用于在SQL中包含标识符,而不是单引号。单引号仅适用于字符串。在这种情况下,您正在尝试确保“testing.this”按原样使用,而不是混淆为testing.this(testing
table this
列)。
答案 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'
答案 4 :(得分:0)
我找到了“修复”......
SELECT列AS'.alias.1'FROM 表;
alias.1
--------
result 1
result 2
刚开始的另一个点......
当然我不喜欢这个解决方案...... 任何其他想法??