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

MySQLで引用符をエスケープするときにバックスラッシュを保持する方法– QUOTE()

    バックスラッシュを使用して一重引用符をエスケープすることは、一重引用符がMySQLの完全な文字列の処理に干渉しないようにするために一般的に使用される手法です。

    文字列を囲むために一重引用符が使用されるため、文字列自体の中で一重引用符を使用すると、適切にエスケープしないと大混乱を引き起こす可能性があります。引用符の直前に円記号を挿入するだけで、MySQLが文字列を途中で終了することがなくなります。

    ただし、円記号を残したい場合があります。たとえば、SQLステートメントで文字列を使用する場合があるため、最初に文字列を適切にエスケープする必要があります。

    ここでQUOTE() 関数が入ります。

    MySQLのQUOTE() 関数は文字列を引用して、SQLステートメントで適切にエスケープされたデータ値として使用できる結果を生成します。文字列は、一重引用符で囲まれ、円記号(\の各インスタンスで囲まれて返されます。 )、一重引用符(' )、ASCII NUL 、およびControl+Zの前に円記号を付けます。

    QUOTE()関数の構文

    構文は次のとおりです。

    QUOTE(str)

    str (すでに)エスケープされた文字列です。

    例はおそらく私の説明よりもこれをよりよく説明しています:

    SELECT QUOTE('Don\'t!') AS Result;

    結果:

    +-----------+
    | Result    |
    +-----------+
    | 'Don\'t!' |
    +-----------+

    一見すると、「しかし何も起こらなかった-結果は議論とまったく同じだ」と思うかもしれません。ただし、それがまさにこの関数が役立つ理由です。 QUOTE()を使用していなかった場合 機能、これが起こったであろうことです:

    SELECT 'Don\'t!' AS Result;

    結果:

    +--------+
    | Result |
    +--------+
    | Don't! |
    +--------+

    したがって、QUOTE()を使用する 関数では、一重引用符と円記号を保持します。

    もちろん、多くの場合、これはまさにあなたが望むものです。多くの場合、円記号と周囲の引用符は必要です。 除去される。ただし、QUOTE()とまったく同じものが必要な場合もあります。 関数はあなたのためになります。

    代替案

    QUOTE() 関数を使用すると、次のような操作を行う必要がなくなります。

    SELECT '''Don\\\'t!''' AS Result;

    結果:

    +-----------+
    | Result    |
    +-----------+
    | 'Don\'t!' |
    +-----------+

    したがって、一重引用符ごとに3つの一重引用符を使用し、一重引用符ごとに3つの円記号を使用する必要がなくなります。


    1. maven-assembly-pluginに必要なドライバーを含めると、適切なドライバーが見つかりません

    2. OracleでのIPv4/IPv6アドレスの表現

    3. ISNUMERIC('。')が1を返すのはなぜですか?

    4. ファイルシステムではなくデータベースにファイルを保存しますか?