使用PRAGMA作为SQLite中的源来获取列名

Pau*_*han 13 sqlite metadata

问题:

我想做这个操作

select name from pragma table_info(my_awesome_table)

但是,它会产生语法错误.我有偷偷摸摸的怀疑这是可能的,但似乎没有记录在使用sqlite 的SELECT文档中可用.

new*_*ver 9

Pragma是SQLite特有的SQL扩展,它有一个特殊的语法:

sqlite> create table my_table (a int, b TEXT);
sqlite> .headers ON
sqlite> .mode columns
sqlite> pragma table_info(my_table);
cid         name        type        notnull     dflt_value  pk
----------  ----------  ----------  ----------  ----------  ----------
0           a           int         0                       0
1           b           TEXT        0                       0
sqlite> select name from pragma_table_info('my_table');
name
----------
a
b
Run Code Online (Sandbox Code Playgroud)

您不能指定列,也不能在子查询中使用编译指示.

  • @Paul Nathan:`pragma-stmt`(http://sqlite.org/syntaxdiagrams.html#pragma-stmt)仅由`sql-stmt`使用,而不是`select-stmt`(http:// sqlite) .org/syntaxdiagrams.html#select-stmt),其定义是递归的. (2认同)