sqlite: псевдоним столбца не может содержать точку "." - PullRequest
3 голосов
/ 08 марта 2011

(извините за мой плохой английский)

Если вы попытаетесь выполнить эту операцию выбора в базе данных sqlite:

ВЫБЕРИТЕ столбец AS 'alias 1' FROM table;

Вы получите ожидаемое имя столбца:

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

, но если ваш псевдоним содержит точку "."... вы получаете неправильное имя столбца:

ВЫБЕРИТЕ столбец AS 'alias.1' FROM table;

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

(все, что за точкой опущено вимя столбца)

Ух ты ... Это странно ...

кто-нибудь может мне помочь?

большое спасибо

ОБНОВЛЕНИЕ:

возможно, это просто ошибка в SQLiteStudio (программное обеспечение, в котором я тестирую свои запросы) и в QT (они не ожидают точек в псевдонимах, но sqlite делает)

Ответы [ 5 ]

10 голосов
/ 08 марта 2011

Заключите ваш псевдоним в двойные кавычки.

SELECT 'test' AS "testing.this"

Выход:

| testing.this |
  test

Обновлен: Двойные кавычки используются для заключения идентификаторов в SQL, а не одинарные кавычки. Одинарные кавычки только для строк. В этом случае вы пытаетесь убедиться, что «testing.this» используется как есть, и не следует путать с «testing.this» (testing таблица this столбец).

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

2 голосов
/ 08 марта 2011

Используйте обратные пометки

SELECT column AS `alias.1` FROM table;

Или двойные кавычки (стандарт ANSI) для другого ответа

SELECT column AS "alias.1" FROM table;

Оба проверены в SQLite Manager для FireFox

1 голос
/ 03 июля 2012

Если вы используете 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

1 голос
/ 10 октября 2011

Определенно работает правильно:

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 голосов
/ 08 марта 2011

Я нашел "исправить" ...

ВЫБРАТЬ столбец AS '.alias.1' ИЗ таблицы;

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

просто еще одна точкав начале ...

конечно, мне не нравится это решение ... есть еще идеи ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...