c - 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
,所以如果这些信息真的没有公开,我会感到惊讶。
有关的:
解决方案
转换为 blob 以从以下位置获取大小(以字节为单位)length()
:
SELECT length(cast(body AS BLOB)) FROM table;
推荐阅读
- java - 如何将 CountDownLatch 对象传递给 Thread 的构造函数?
- flutter - 显示时颤动的视频尺寸与视频的实际尺寸不匹配
- python - 从多维数组中删除最后一个元素
- php - 删除有效的验证 url 要求 php
- awk - awk - 在文件中搜索多个字符串并存储此行中的特定单词以在最后一行打印所有字符串
- while-loop - 重构时
- javascript - 对象分配后仍然反映对对象的更改
- csv - Apache Camel 使用 kotlin 解组简单的 csv
- python - Discord.py 会员加入特定频道时的消息
- python - 在python中重置打印机的USB端口