Oracle-更改所有表列名称,并在名称之间使用空格修饰
对于alter之前的列名:
家庭电话
手机号码
本地号码
更改列名称后应为:
家庭电话
手机号码
本地号码
我已经尝试过这种方式:但是无法破解:
UPDATE SA_VW_PHONENUMBER TN SET TN.Column_Name = TRIM (TN.Column_Name);
答案 0 :(得分:3)
使用此基于游标的DDL黑客-语句concat。
BEGIN
FOR alters IN
(
SELECT
'ALTER TABLE "'||table_name||'" RENAME COLUMN "'||column_name||
'" TO "'||replace(cols.column_name,' ','')||'"' sql_stmt
FROM all_tab_cols cols
WHERE REGEXP_LIKE(column_name,'[[:space:]]')
AND owner = user --Add real schema name here
ORDER BY 1
) LOOP
DBMS_OUTPUT.PUT_LINE ( alters.sql_stmt ||';') ;
EXECUTE IMMEDIATE alters.sql_stmt;
END LOOP;
END;
/
据我所知,您不能将DDL作为动态SQL执行,因此您不能将变量传递给ALTER TABLE
命令,但是您可以代替它来做。
SELECT table_name,column_name,replace(cols.column_name,' ','') as replace_name
FROM all_tab_cols
WHERE REGEXP_LIKE(column_name,'[[:space:]]');
ALTER TABLE
DDL命令:alter table T_TABLE rename column "COLUMN SPACE" TO "COLUMNNOSPACE";
答案 1 :(得分:0)
尝试替换功能
UPDATE SA_VW_PHONENUMBER TN SET TN.Column_Name = REPLACE(TN.Column_Name,' ','')