gpt4 book ai didi

oracle - 如何修剪所有字符串类型表中所有行中的所有列?

转载 作者:行者123 更新时间:2023-12-04 23:10:03 25 4
gpt4 key购买 nike

在 Oracle 10g 中,有没有办法在 PL/SQL 中执行以下操作?

for each table in database
for each row in table
for each column in row
if column is of type 'varchar2'
column = trim(column)

谢谢!

最佳答案

当然,进行大规模的动态更新具有潜在的危险性和耗时性。但是,您可以通过以下方式生成所需的命令。这是针对单个模式的,只会构建命令并输出它们。您可以将它们复制到脚本中并在运行前查看它们。或者,您可以更改 dbms_output.put_line( ... )EXECUTE IMMEDIATE ...让这个脚本在生成所有语句时执行它们。

SET SERVEROUTPUT ON

BEGIN
FOR c IN
(SELECT t.table_name, c.column_name
FROM user_tables t, user_tab_columns c
WHERE c.table_name = t.table_name
AND data_type='VARCHAR2')
LOOP

dbms_output.put_line(
'UPDATE '||c.table_name||
' SET '||c.column_name||' = TRIM('||c.column_name||') WHERE '||
c.column_name||' <> TRIM('||c.column_name||') OR ('||
c.column_name||' IS NOT NULL AND TRIM('||c.column_name||') IS NULL)'
);
END LOOP;
END;

关于oracle - 如何修剪所有字符串类型表中所有行中的所有列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2835893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com