簡體   English   中英

如何將這些記錄拆分為單獨的新記錄?

[英]How to split these records into individual new ones?

我想搜索 column2 ( site_id )中是否存在字符串,然后將該字符串放入一個新表中,並在該行中使用其前列的值。 該表只有 2 列,並且site_id列可能有許多我想要的 5 字字符串。

我想獲取所有特定的站點 ID。 例如:E7089 或 E7459(我需要所有這些,第一個單詞是隨機的,如 E 或 T 等,四個數字是可變的)。

第一行有一個ticket_id和許多site_id 我只需要像:g1231 或 g1236 這樣的站點 ID,而不是括號中的地址:

票號 site_id
sss-bb-12312312-12312 g1231(afsdgf-sdgsdgdg)、g1236(sdfsdgsdg)、g3212(asdfas-dfsd)、b2311(asdasd)、b3213(asdfsdf)

讓它像這樣:

票號 site_id
sss-bb-12312312-12312 g1231
sss-bb-12312312-12312 g3211
sss-bb-12312312-12312 g1236
sss-bb-12312312-12312 b2311
sss-bb-12312312-12312 b3213

我可以使用 regexp [AZ]\d{1,4}找到 5 個單詞的站點 ID,但我無法將它們提取並插入到新行中。 我的代碼:

DROP TABLE IF EXISTS test2;

CREATE TABLE if NOT EXISTS test2 
(
    Ticket_id varchar,
    site_id varchar
);

INSERT INTO test2 
    SELECT ticket_id, site_id 
    FROM TEST 
    WHERE site_id regexp '[A-Z]\d{1,4}';

這將找到site_id並插入匹配的行。 我不想要那個。 如何將第一個轉換為第二個?

當前數據庫:

第 1 列 第 2 列
票1 許多網站ID
票2 許多網站ID

我希望它是:

第 1 列 第 2 列
票1 ID
票1 ID
票1 ID
票1 ID
票2 ID
票2 ID
票2 ID
  • 票證不需要任何更改,除非使用分配的site_id復制到新行中。
  • 每個工單有多個site_id需要分隔到新行。
  • 它需要在 SQLite db 瀏覽器中完成(不幸的是沒有 Python)。

您需要遞歸 CTE 來拆分表test1site_id列和 SUBSTR() 函數以將前 5 個字符插入表test2

WITH cte AS (
    SELECT ticket_id, '' site_id, site_id || ',' s 
    FROM test1
    UNION ALL 
    SELECT ticket_id,
           SUBSTR(s, 0, INSTR(s, ',')),
           SUBSTR(s, INSTR(s, ',') + 1)
    FROM cte 
    WHERE s <> ''
) 
INSERT INTO test2 (ticket_id, site_id) 
SELECT ticket_id, SUBSTR(TRIM(site_id), 1, 5) 
FROM cte
WHERE site_id <> '';

請參閱演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM