代码之家  ›  专栏  ›  技术社区  ›  Anse

SQLite C API等效于typeof(col)

  •  1
  • Anse  · 技术社区  · 5 年前

    我想检测任何列的数据类型 SELECT SQLite中的查询。

    在C API中 const char *sqlite3_column_decltype(sqlite3_stmt*,int) 为了这个目的。但这仅适用于真实表中的列。表达式,例如 LOWER('ABC') ,或查询中的列,如 PRAGMA foreign_key_list("mytable") ,始终返回 null 在这里。

    我知道还有 typeof(col) ,但我无法控制触发的SQL,因此我需要一种方法从准备好的语句中提取数据类型。

    1 回复  |  直到 5 年前
        1
  •  2
  •   Shawn    5 年前

    您正在寻找 sqlite3_column_type() :

    这个 sqlite3_column_type() 例程返回结果列的初始数据类型的数据类型代码。返回的值是以下之一 SQLITE_INTEGER , SQLITE_FLOAT , SQLITE_TEXT , SQLITE_BLOB ,或 SQLITE_NULL .返回值 sqlite3_column_type() 可用于决定应使用前六个接口中的哪一个来提取列值。

    记住,在sqlite中,类型在很大程度上与 价值 ,而不是列-不同的行可以在同一列中存储不同的类型。

    推荐文章