sql >> データベース >  >> RDS >> Oracle

SQL/正規表現チャレンジ/パズル:(SQLクエリを使用して)SQLコードからコメントを削除する方法は?

    ソリューション

    テラデータ

    with t (txt) as 
    (
    select     '
                select    /* comment /* yada yada yada /* / // bla bla bla  
                            1
                                        */ t1.i
                       ,''"SRC''''"''    as "This''is''the
                                    ''source"
    
                from      t1 /* "Comment 2" - '' */ cross join t2 -- /* comment 3 */
    
                where     t2.v = ''/*DST"*
                                    /'' -- comment 4'
    )
    
    select    regexp_replace (txt,'(''.*?''|".*?")|/\*.*?\*/|--.*?(?=[\r\n]|$)','\1',1,0,'n')     as clean_txt
    
    from      t
    ;
    

    オラクル

    with t (txt) as 
    (
    select     '
                select    /* comment /* yada yada yada /* / // bla bla bla  
                            1
                                        */ t1.i
                       ,''"SRC''''"''    as "This''is''the
                                    ''source"
    
                from      t1 /* "Comment 2" - '' */ cross join t2 -- /* comment 3 */
    
                where     t2.v = ''/*DST"*
                                    /'' -- comment 4'
    
    from        dual
    )
    
    select    regexp_replace (txt,'(''.*?''|".*?")|/\*.*?\*/|--.*?(?=$|\Z)','\1',1,0,'nm')
    
    from      t
    ;
    

    結果

                select     t1.i
                       ,'"SRC''"'    as "This'is'the
                                    'source"
    
                from      t1  cross join t2 
    
                where     t2.v = '/*DST"*
                                    /'
    



    1. MySQLには、Oracleのレベルのような機能があります。

    2. Postgresの行サイズを理解する

    3. MySQL整数フィールドマッチング文字列で何が起こっていますか?

    4. HibernateでのTomcatプーリングに関する問題。 MySQLタイムアウト