Sqlite
取一列,將其拆分為新列
範例表:
ID CB CB2 CB3 CB4 ---- -------- ---- ---- ---- 1 亀 龜 龜 2 竜 龒
注意:每個字元用空格隔開。注意:CB 中的字元數會有所不同。
我想將 CB 列中的每個字元(在第一個字元之後)移動到它自己的單獨列,以便每列中不超過一個字元。
像這樣:
ID CB CB2 CB3 CB4 ---- ---- ---- ---- ---- 1 亀 龜 龜 2 竜 龒
(SQLite)
使用最大字元大小為 3 sqllite(Web) 的 CB 列範例,只是展示如何拆分字元。
CREATE TABLE TABLE1 (ID number,CB text(3),CB2 text(1),CB3 text(1),CB4 text(1)); INSERT INTO TABLE1 VALUES(1,'ABC','','',''); INSERT INTO TABLE1 VALUES(2,'DE','','',''); select id, CASE WHEN LENGTH(CB) >= 1 THEN SUBSTR(CB,1,1) END CB, CASE WHEN LENGTH(CB) >= 2 THEN SUBSTR(CB,2,1) END CB2, CASE WHEN LENGTH(CB) >= 3 THEN SUBSTR(CB,3,1) END CB3 from table1
注意:不是解決方案,您可以從這個想法中解決。
在同一張桌子上更新
--table creation CREATE TABLE TAB1 (ID integer,CB text(5),CB1 text(1),CB2 text(1),CB3 text(1),CB4 text(1)); --- Insert sample rows INSERT INTO TAB1 VALUES(1,'ABCDE','','','',''); INSERT INTO TAB1 VALUES(2,'DE','','','',''); INSERT INTO TAB1 VALUES(3,'KLM','','','',''); ---update rows UPDATE tab1 SET cb = CASE WHEN length(cb) > 1 THEN substr(cb,1,1) END, cb1 = CASE WHEN length(cb) >= 2 THEN substr(cb,2,1) END, cb2 = CASE WHEN length(cb) >= 3 THEN substr(cb,3,1) END, cb3 = CASE WHEN length(cb) >= 4 THEN substr(cb,4,1) END, cb4 = CASE WHEN length(cb) >= 5 THEN substr(cb,5,1) END WHERE id IN ( SELECT id FROM tab1);
如果您有兩個表,只需通過 id(inner) 連接並使用 case 語句更新目標表