Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlite:别名列名不能包含点“”_Sql_Sqlite - Fatal编程技术网

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

sqlite:别名列名不能包含点“”,sql,sqlite,Sql,Sqlite,对不起,我的英语很差 如果在sqlite数据库上尝试此选择操作: 从表中选择列作为“别名1” 您将获得预期的列名: alias 1 -------- result 1 result 2 但是如果您的别名包含一个点。。。您得到了错误的列名: alias 1 -------- result 1 result 2 从表中选择列作为“alias.1” 点号后面的所有内容都显示在列名中 哇。。。 很奇怪 有人能帮我吗 多谢各位 更新: 也许这只是SQLiteStudio中的一个bug,我在该软件中测试

对不起,我的英语很差

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

从表中选择列作为“别名1”

您将获得预期的列名:

alias 1
--------
result 1
result 2
但是如果您的别名包含一个点。。。您得到了错误的列名:

alias 1
--------
result 1
result 2
从表中选择列作为“alias.1”

点号后面的所有内容都显示在列名中

哇。。。 很奇怪

有人能帮我吗

多谢各位

更新:


也许这只是SQLiteStudio中的一个bug,我在该软件中测试我的查询,在QT中,它们都不希望别名中有点,但sqlite确实用双引号括住了您的别名

SELECT 'test' AS "testing.this"
输出:

| testing.this |
  test
更新: 双引号用于在SQL中括起标识符,而不是单引号。单引号仅用于字符串。在这种情况下,您试图确保testing.this按原样使用,而不是与testing.this testing表混淆

使用反勾号

SELECT column AS `alias.1` FROM table;
或者在另一个答案中双引号引用ANSI标准

SELECT column AS "alias.1" FROM table;
在SQLite Manager for FireFox中对两者进行了验证,我找到了一个修复程序

从中选择列作为“.alias.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>

如果您使用的是SQLite 3,那么下面的查询可以很好地处理用于别名的各种类型

请参见查询下面的结果:

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

不那不行。SQlite使用单引号。我运行了查询…它工作得很好,否则我不会给你输出。我相信你的话Kevin。。。但这对我不起作用。。。请,如果你可以,尝试你的查询在这个软件反正它不工作在我的C++软件可能是一个限制在你的API和软件然后。我会在那里记录一个错误不。。。那不行。。用这种方式输入别名。1。。。而且你没有得到预期的列名……我以为backticks是双引号用法的MySQL扩展?SQL标准是双引号的,不是吗?@Kevin这两种方法都有效@Javi-您从哪里运行查询?通过SQLiteStudio和我的qtsoftware@Javi考虑到新的金块,你的变通方法就是一切。很高兴找到它。我会提交一份错误报告
select '1' as 'my.Col1', '2' as "my.Col2", '3' as [my.Col3], '4' as [my Col4] , '5' as 'my Col5'