【问题标题】:SQLite C API equivalent to typeof(col)SQLite C API 等效于 typeof(col)
【发布时间】:2020-05-02 02:27:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: sqlite c-api


    【解决方案1】:

    你正在寻找sqlite3_column_type():

    sqlite3_column_type() 例程返回结果列的初始数据类型的数据类型代码。返回值为SQLITE_INTEGERSQLITE_FLOATSQLITE_TEXTSQLITE_BLOBSQLITE_NULL 之一。 sqlite3_column_type()的返回值可以用来决定使用前六个接口中的哪一个来提取列值。

    请记住,在 sqlite 中,类型大部分与 相关联,而不是列 - 不同的行可以在同一列中存储不同的类型。

    【讨论】:

    • 这就像一个魅力,谢谢!我多次阅读该文档页面,但在其他页面下方监督了这个特殊的页面。人们需要习惯这些基于值的数据类型。但我想这方面有无数的讨论,所以我会保持冷静:)
    猜你喜欢
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 2016-05-01
    • 2016-03-19
    相关资源
    最近更新 更多