Delphi/FireDAC/SQLite-强制字符串类型列上的文本列关联(前导零丢失)

Delphi/FireDAC/SQLite-强制字符串类型列上的文本列关联(前导零丢失),sqlite,delphi,firedac,Sqlite,Delphi,Firedac,我犯了一个错误,在createtableDDL语句中将SQLite表列声明为STRING。在该列中插入'00123'将导致写入数值123(因此前导零丢失)。我应该使用文本 使用FireDAC,是否有任何方法可以在不删除和重新创建表的情况下强制该列的TEXTaffinity?或者,换句话说,强制在字符串列类型中写入前导零 我尝试了插入表名(字符串列)值(CAST('00123'作为文本))但没有成功 如果drop/create table是唯一的方法,那么有没有办法知道表格中的列是否被创建为STR

我犯了一个错误,在
createtable
DDL语句中将SQLite表列声明为
STRING
。在该列中插入
'00123'
将导致写入数值
123
(因此前导零丢失)。我应该使用
文本

使用FireDAC,是否有任何方法可以在不删除和重新创建表的情况下强制该列的
TEXT
affinity?或者,换句话说,强制在
字符串
列类型中写入前导零

我尝试了
插入表名(字符串列)值(CAST('00123'作为文本))
但没有成功

如果drop/create table是唯一的方法,那么有没有办法知道表格中的列是否被创建为
STRING
(因此,获取其关联性)


-žarko

不幸的是,您必须重新创建表。定义为字符串的列可以在
selectsqlfromsqlite\u-master,其中name='table\u-name'
中找到。我看到的唯一方法是使用BLOB-literal:
INSERT-INTO-table\u-name(string\u-column)值(x'3030313233')存储具有
BLOB
亲和性的UTF-8
。谢谢@Branko和Peter Wolf-我最终删除并重新创建了“text”类型的表。您的问题回答了我的疑问,即为什么我的字符串中没有以零开头,因为它是一个字符串。我将其类型更改为文本并解决我的问题。谢谢