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

MySQLコメントに一致する正規表現

    PHPでは、このコードを使用してSQLのコメントを解除しています:

    $sqlComments = '@(([\'"`]).*?[^\\\]\2)|((?:\#|--).*?$|/\*(?:[^/*]|/(?!\*)|\*(?!/)|(?R))*\*\/)\s*|(?<=;)\[email protected]';
    /* Commented version
    $sqlComments = '@
        (([\'"`]).*?[^\\\]\2) # $1 : Skip single & double quoted + backticked expressions
        |(                   # $3 : Match comments
            (?:\#|--).*?$    # - Single line comments
            |                # - Multi line (nested) comments
             /\*             #   . comment open marker
                (?: [^/*]    #   . non comment-marker characters
                    |/(?!\*) #   . ! not a comment open
                    |\*(?!/) #   . ! not a comment close
                    |(?R)    #   . recursive case
                )*           #   . repeat eventually
            \*\/             #   . comment close marker
        )\s*                 # Trim after comments
        |(?<=;)\s+           # Trim after semi-colon
        @msx';
    */
    $uncommentedSQL = trim( preg_replace( $sqlComments, '$1', $sql ) );
    preg_match_all( $sqlComments, $sql, $comments );
    $extractedComments = array_filter( $comments[ 3 ] );
    var_dump( $uncommentedSQL, $extractedComments );
    


    1. PHP / mysqlは、UPDATEステートメントの影響を受ける行の数を取得します

    2. 2つのパーティショニングの特殊性

    3. MySQLの奇妙さを備えたジャンゴのキャラクターセット

    4. SQL Server Parallel Backup Restore -1