by way of Darren Duncan wrote:

You donĀ“t undertand me, maybe my poor english.
I will try to show with examples in the sqlite command line.

create table test("Full Name" varchar(30), "Login" varchar(15), Age integer);
insert into test ("Full Name", "Login", Age) values ("Enrique Esquivel",
"the_kique", 24);
.headers on
select * from test;

SQLite returns:
Full Name|Login|Age
Enrique Esquivel|the_kique|24

But when write:
select "Full Name", "Login", Age from test;

returns:
"Full Name"|"Login"|Age
Enrique Esquivel|the_kique|24

Moreover when quote all fields:
select "Full Name", "Login", "Age" from test;

returns:
"Full Name"|"Login"|"Age"
Enrique Esquivel|the_kique|24

Also:
select [Full Name], [Login], [Age] from test;

SQLite returns wrong:
"Full Name"|"Login"|"Age"
Enrique Esquivel|the_kique|24

The quotes should be used for SQLite only for understand the identifiers, the fields in result must be unquoted. Try to test with other dbms and anyone has
this behavior.

Your problem is related to SQLite's column name pragmas. The script below demonstrates how SQLite displays the names in all four possible combinations of these settings.

SQLite version 3.2.7
Enter ".help" for instructions
sqlite> create table test("Full Name" varchar(30), "Login" varchar(15), Age integer); sqlite> insert into test ("Full Name", "Login", Age) values ('Enrique Esquivel', 'the_kique', 24);
sqlite> .mode column
sqlite> .header on

sqlite> select * from test;
Full Name         Login       Age
----------------  ----------  ----------
Enrique Esquivel  the_kique   24

sqlite> select "Full Name", Age from test;
Full Name         Age
----------------  ----------
Enrique Esquivel  24

sqlite> pragma short_column_names;
short_column_names
------------------
1

sqlite> pragma full_column_names;
full_column_names
-----------------
0

sqlite> pragma short_column_names = 0;

sqlite> select '0-0' as 'Short-Full', "Full Name", Age from test;
Short-Full  "Full Name"       Age
----------  ----------------  ----------
0-0         Enrique Esquivel  24
sqlite> pragma full_column_names = 1;
sqlite> select '0-1' as 'Short-Full', "Full Name", Age from test;
Short-Full  test.Full Name    test.Age
----------  ----------------  ----------
0-1         Enrique Esquivel  24

sqlite> pragma short_column_names = 1;

sqlite> select '1-1' as 'Short-Full', "Full Name", Age from test;
Short-Full  test.Full Name    test.Age
----------  ----------------  ----------
1-1         Enrique Esquivel  24

sqlite> pragma full_column_names = 0;

sqlite> select '1-0' as 'Short-Full', "Full Name", Age from test;
Short-Full  Full Name         Age
----------  ----------------  ----------
1-0         Enrique Esquivel  24

You appear to have both short_column_names and full_column_names set to 0. If you can't change the short_column_name pragma back to 1 (the default value), you can still get your desired behavior by giving the column an alias in your query as shown below. This isn't really a general solution though. It won't work for user supplied SQL for example.

sqlite> pragma short_column_names = 0;

sqlite> select "Full Name" as 'Full Name', Age from test;
Full Name         Age
----------------  ----------
Enrique Esquivel  24

The column name pragmas in SQLite are somewhat messed up (and their behavior doesn't match the documentation), so don't expect to get rational behavior from them. All you can do is try different combinations to see what works best.

Also note, when inserting the strings into the table you were using double quotes around the literal strings. SQLite has an extension that lets this work, but you really should be using single quotes as I have done above. Double quotes are used to quote identifiers in standard SQL, so they won't work with other SQL database engines.

HTH
Dennis Cote

Reply via email to