当前位置:  开发笔记 > 前端 > 正文

如何获取列名列表

如何解决《如何获取列名列表》经验,为你挑选了3个好方法。

可以获取包含表的所有列名的行,如下所示:

|id|foo|bar|age|street|address|

我不喜欢用Pragma table_info(bla).



1> Konstantin T..:
SELECT sql FROM sqlite_master
WHERE tbl_name = 'table_name' AND type = 'table'

然后使用Reg Exp(很容易)解析这个值,它看起来类似于: [(.*?)]

或者你可以使用:

PRAGMA table_info(table_name)


`然后用Reg Exp解析这个值(这很容易)......`真的很模糊,用正则表达式获取列defs的查询的完整示例在这里已经走了很长的路.

2> 小智..:

如果您.headers on在执行查询之前使用命令行shell到SQLite .您只需要在给定的会话中执行此操作一次.


对于那些想要获得他们习惯用其他SQL shell看到的典型SELECT输出格式的人来说,使用`.mode column`和`.headers on`.

3> GeekTantra..:

这有助于HTML5 SQLite:

tx.executeSql('SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "your_table_name";', [], function (tx, results) {
  var columnParts = results.rows.item(0).sql.replace(/^[^\(]+\(([^\)]+)\)/g, '$1').split(','); ///// RegEx
  var columnNames = [];
  for(i in columnParts) {
    if(typeof columnParts[i] === 'string')
      columnNames.push(columnParts[i].split(" ")[0]);
  }
  console.log(columnNames);
  ///// Your code which uses the columnNames;
});

您可以使用您的语言重用正则表达式来获取列名称.

更短的选择:

tx.executeSql('SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "your_table_name";', [], function (tx, results) {
  var columnNames = results.rows.item(0).sql.replace(/^[^\(]+\(([^\)]+)\)/g, '$1').replace(/ [^,]+/g, '').split(',');
  console.log(columnNames);
  ///// Your code which uses the columnNames;
});


请注意,这两个解决方案都假设SQLITE_MASTER表的`sql`字段中没有任何额外的空格或其他空格.由于此字段包含用于创建表的文字查询文本,因此并非总是如此.我也认为它不能正确处理包含空格的字段名称.
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有