regexp_replace而不是TRIM

时间:2016-11-17 18:45:03

标签: sql regex postgresql

编辑 - 根据用户评论完成重写。 第一篇文章 - 试图做到这一点。

我希望在下面使用regex_replace而不是TRIM。

SELECT 
       'UPDATE '||quote_ident(c.table_name)||' SET '||c.COLUMN_NAME||'=TRIM('||quote_ident(c.COLUMN_NAME)||')  
        WHERE '||quote_ident(c.COLUMN_NAME)||' ILIKE ''% '' ' AS script
FROM (
        SELECT 
           table_name,COLUMN_NAME
        FROM 
           INFORMATION_SCHEMA.COLUMNS 
        WHERE 
           table_name LIKE 'my_%' AND (data_type='text' OR data_type='character varying')
     ) c;

生成此语句:

UPDATE my_table SET my_field=TRIM(my_field);

目标是生成以下声明:

UPDATE my_table SET my_field=regexp_replace(my_field, '\s+$', '');

但是我的尝试:

SELECT 
               'UPDATE '||quote_ident(c.table_name)||' SET '||c.COLUMN_NAME||'=regexp_replace('||quote_ident(c.COLUMN_NAME)||', '\s+$', '')  
                WHERE '||quote_ident(c.COLUMN_NAME)||' ILIKE ''% '' ' as script
        FROM (
                SELECT 
                   table_name,COLUMN_NAME
                FROM 
                   INFORMATION_SCHEMA.COLUMNS 
                WHERE 
                   table_name LIKE 'my_%' AND (data_type='text' OR data_type='character varying')
             ) c;

生成以下错误:

ERROR:  syntax error at or near "\"
    LINE 2: ...regexp_replace('||quote_ident(c.COLUMN_NAME)||', '\s+$', '')...
                                                                 ^

希望能够清楚地了解为什么这不起作用。谢谢。

0 个答案:

没有答案