SQLite C API, эквивалентный typeof (столбец) - PullRequest
1 голос
/ 15 января 2020

Я хочу определить типы данных столбцов любого запроса SELECT в SQLite.

В API C для этой цели есть const char *sqlite3_column_decltype(sqlite3_stmt*,int). Но это работает только для столбцов в реальной таблице. Выражения, такие как LOWER('ABC'), или столбцы из запросов, таких как PRAGMA foreign_key_list("mytable"), всегда возвращают null здесь.

Я знаю, что есть также typeof(col), но я не могу управлять запущенным SQL, поэтому мне нужен способ извлечь тип данных из подготовленного оператора.

1 Ответ

2 голосов
/ 15 января 2020

Вы ищете sqlite3_column_type () :

Подпрограмма sqlite3_column_type() возвращает код типа данных для начального типа данных столбца результата. Возвращаемое значение является одним из SQLITE_INTEGER, SQLITE_FLOAT, SQLITE_TEXT, SQLITE_BLOB или SQLITE_NULL. Возвращаемое значение sqlite3_column_type() можно использовать для определения того, какой из первых шести интерфейсов следует использовать для извлечения значения столбца.

И помните, что в sqlite тип по большей части связан с значение , а не столбец - разные строки могут иметь разные типы в одном и том же столбце.

...