首页 > 解决方案 > Sqlite 中 (utf-8) TEXT 的 DATALENGTH SQL 函数?

问题描述

我正在使用 SQLite 的 C 接口,需要列出存储在TEXT列中的字符串的大小,即某些数据库将支持使用

SELECT DATALENGTH(body) FROM table;

但是,SQLite 没有这个DATALENGTH功能。由于有问题的文本很大,我想避免body从磁盘加载实际的列。由于TEXT是 utf8,LENGTH(body)因此不会返回所需的结果(它确实返回字符数,而我需要知道存储大小)。将列转换BLOB为不是一种选择,因为数据库是由第三方程序创建的。

问:有没有什么方法可以直接从数据库中获取这些信息,而不是编写一个自定义的 SQL 函数?SQLite文件格式确实存储了字段的长度TEXT,所以如果这些信息真的没有公开,我会感到惊讶。

有关的:

标签: csqlite

解决方案


转换为 blob 以从以下位置获取大小(以字节为单位)length()

SELECT length(cast(body AS BLOB)) FROM table;

推荐阅读