我有一个数据库test.db
,第一列包含123456;abcdef;ghijk
等。是否可以将数据拆分为自己的列?
123456
永远不会改变长度。
abcdef
和ghijk
更改长度,也可能不包含任何内容。
我已尝试过以下字符串,但我;
或t2
显示t3
,具体取决于abcdef
和ghijk
的长度。< / p>
select substr(column,1,6) AS "t1",
substr(column,8,6) AS "t2",
substr(column,15,10) AS "t3" test.db
;
分隔符导致问题吗?
或者我可以将数据库输出到.sql
,格式化txt然后导入到新数据库吗?
答案 0 :(得分:1)
没有built-in SQLite function可以分割这样的字符串。
如果您使用的是SQLite C API或APSW之类的包装器,则可以创建自己的函数(C,APSW)。
如果您只想进行一次性转换,通过文本文件导出/导入将是最简单的解决方案。
答案 1 :(得分:0)
您可以通过以下方式将行分为几列:
create table t1 as
select substr(c1,0,instr(c1,';')) as column1,
substr(c1,instr(c1,';')+1,instr(c1,';')-1) as column2,
substr(c1,instr(c1,';')+1+instr(substr(c1,instr(c1,';')+1),';')) as column3
from table_test;
其中c1是您要选择的列。