2

我有一个test.db第一列包含123456;abcdef;ghijk等的数据库。是否可以将数据拆分为自己的列?

123456从不改变长度。

abcdefghijk更改长度,也可能不包含任何内容。

我已经尝试了下面的字符串,但我得到了;出现在t2或者t3取决于abcdefand的长度ghijk

select substr(column,1,6) AS "t1",
       substr(column,8,6) AS "t2",
       substr(column,15,10) AS "t3" test.db

;分隔符是否导致问题?

或者我可以将数据库输出到.sql,格式化txt然后导入到新数据库吗?

4

2 回答 2

1

没有内置的 SQLite 函数可以像这样拆分字符串。

如果您使用 SQLite C API 或 APSW 之类的包装器,则可以创建自己的函数(CAPSW)。

如果您只想进行一次性转换,那么通过文本文件导出/导入将是最简单的解决方案。

于 2012-10-05T11:43:11.093 回答
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 是您从中选择的列。

于 2019-03-02T21:19:53.093 回答