使用 REGEXP_REPLACE 将字段从一个 table 复制到另一个
Copy field from one table to another with REGEXP_REPLACE
之前运行一个REGEXP_REPLACE
就大了table,我想预览结果,所以想复制'before'和'after'修改后的字段到另一个 table 这样我就可以审计了。
最好的方法是什么?
类似
INSERT INTO table2 (before, after)
SELECT field1, REGEXP_REPLACE(field1,'foo','bar')
FROM table1
WHERE condition
(MariaDB)
如果这是我的项目,我会做这些事情。
首先。只需这样做并观察结果。
SELECT COUNT(*), field1, REGEXP_REPLACE(field1,'foo','bar')
FROM table1
WHERE field1 <> REGEXP_REPLACE(field1,'foo','bar')
GROUP BY field1, REGEXP_REPLACE(field1,'foo','bar')
ORDER BY COUNT(*), field1
这将首先向您显示频率最低的值,这样您就可以首先看到由您的替换引起的 one-off 问题。无需创建 table.
其次,我观察了没有随之改变的值,将 WHERE 子句从 <>
更改为 =
。
SELECT COUNT(*), field1
FROM table1
WHERE field1 = REGEXP_REPLACE(field1,'foo','bar')
GROUP BY field1
ORDER BY COUNT(*), field1
也许有些应该改变的东西没有改变。
Edit SQL 可能有点冗长。如果您正在摆弄一些复杂的转换函数,您可以尝试创建一个视图。像这样:
CREATE OR REPLACE VIEW testview AS
SELECT field1,
REGEXP_REPLACE(field1,'foo','bar') changed
FROM table1;
那你可以做
SELECT COUNT(*), field1, changed
FROM testview
WHERE field1 <> changed
GROUP BY field1, changed
ORDER BY COUNT(*), field1;
和类似的查询。如果您必须更改替换功能,您可以编辑视图定义并再次执行创建或替换。
之前运行一个REGEXP_REPLACE
就大了table,我想预览结果,所以想复制'before'和'after'修改后的字段到另一个 table 这样我就可以审计了。
最好的方法是什么?
类似
INSERT INTO table2 (before, after)
SELECT field1, REGEXP_REPLACE(field1,'foo','bar')
FROM table1
WHERE condition
(MariaDB)
如果这是我的项目,我会做这些事情。
首先。只需这样做并观察结果。
SELECT COUNT(*), field1, REGEXP_REPLACE(field1,'foo','bar')
FROM table1
WHERE field1 <> REGEXP_REPLACE(field1,'foo','bar')
GROUP BY field1, REGEXP_REPLACE(field1,'foo','bar')
ORDER BY COUNT(*), field1
这将首先向您显示频率最低的值,这样您就可以首先看到由您的替换引起的 one-off 问题。无需创建 table.
其次,我观察了没有随之改变的值,将 WHERE 子句从 <>
更改为 =
。
SELECT COUNT(*), field1
FROM table1
WHERE field1 = REGEXP_REPLACE(field1,'foo','bar')
GROUP BY field1
ORDER BY COUNT(*), field1
也许有些应该改变的东西没有改变。
Edit SQL 可能有点冗长。如果您正在摆弄一些复杂的转换函数,您可以尝试创建一个视图。像这样:
CREATE OR REPLACE VIEW testview AS
SELECT field1,
REGEXP_REPLACE(field1,'foo','bar') changed
FROM table1;
那你可以做
SELECT COUNT(*), field1, changed
FROM testview
WHERE field1 <> changed
GROUP BY field1, changed
ORDER BY COUNT(*), field1;
和类似的查询。如果您必须更改替换功能,您可以编辑视图定义并再次执行创建或替换。