【发布时间】:2022-07-17 04:25:31
【问题描述】:
我想向我的数据库提供一个查询,该查询将搜索 column2 (site_id) 中是否存在字符串,然后将该字符串放入一个新表中,并在该行中使用其前列的值。
表格只有 2 列,site_id 列可能有很多我想要的 5 字字符串。
在此处显示的示例中,我想获取所有特定站点 ID。例如:E7089 或 E7459(我需要所有这些,第一个单词是随机的,如 E 或 T 等,四个数字是可变的)
当前的第一行是这样的:有一个 ticket_id 和许多 site_ids(我只需要像:g1231 或 g1236 这样的站点 ID,而不是括号中的地址)
ticket_id | site_id |
sss-bb-12312312-12312 | g1231(afsdgf-sdgsdgdg), g1236(sdfsdgsdg), g3212(asdfas-dfsd), b2311(asdasd), b3213(asdfsdf)
让它变成这样:
ticket_id | 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
我已经可以搜索整个第二列并使用正则表达式找到 5 字的站点 ID(如果您想尝试:[A-Z]\d{1,4}),但我无法从行并将它们中的每一个插入新行。
我现在的代码是这样的:
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 的行并插入所有与搜索匹配的行,我不希望这样。
有人可以帮助将第一个转换为第二个吗?
目前的db基本上是这样的:
column1 | column2
--------+---------------
ticket1 | many site ids
ticket2 | many site ids
但我希望它是这样的:
culumn1 | column2
ticket1 | id
ticket1 | id
ticket1 | id
ticket1 | id
ticket2 | id
ticket2 | id
ticket2 | id
-
票证不需要任何更改,只需将其复制到分配有
site_id的新行中 -
每张票有很多 site_ids(我已经可以用正则表达式找到它们),需要像上面提到的那样分隔成新的行。
-
只需要在sqlite db浏览器和db浏览器中完成(它是这样分配的,必须这样完成,所以不幸的是没有python)
【问题讨论】:
标签: sqlite sql-insert recursive-query substr db-browser-sqlite