Sqlite从包含的列创建新列;

时间:2012-10-05 10:18:59

标签: sqlite substr

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

123456永远不会改变长度。

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

我已尝试过以下字符串,但我;t2显示t3,具体取决于abcdefghijk的长度。< / p>

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

;分隔符导致问题吗?

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

2 个答案:

答案 0 :(得分:1)

没有built-in SQLite function可以分割这样的字符串。

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

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

答案 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是您要选择的列。