• MySql字符转义


    在字符串中,某些序列具有特殊含义。这些序列均用反斜线(‘\’)开始,即所谓的转义字符。MySQL识别下面的转义序列:

    \0

    ASCII 0(NUL)字符。

    \'

    单引号(‘'’)。

    \"

    双引号(‘"’)。

    \b

    退格符。

    \n

    换行符。

    \r

    回车符。

    \t

    tab字符。

    \Z

    ASCII 26(控制(Ctrl)-Z)。该字符可以编码为‘\Z’,以允许你解决在Windows中ASCII 26代表文件结尾这一问题。(如果你试图使用mysql db_name < file_name,ASCII 26会带来问题)。

    \\

    反斜线(‘\’)字符。

    \%

    ‘%’字符。参见表后面的注解。

    \_

    ‘_’字符。参见表后面的注解。

    这些序列对大小写敏感。例如,‘\b’解释为退格,但‘\B’解释为‘B’。

    ‘\%’和‘\_’序列用于搜索可能会解释为通配符的模式匹配环境中的‘%’和‘_’文字实例。参见12.3.1节,“字符串比较函数”。请注意如果你在其它环境中使用‘\%’或‘\_’,它们返回字符串‘\%’和‘\_’,而不是‘%’和‘_’。

    在其它转义序列中,反斜线被忽略。也就是说,转义字符解释为仿佛没有转义。

    有几种方式可以在字符串中包括引号:

    ·         在字符串内用‘'’引用的‘'’可以写成‘''’。

    ·         在字符串内用‘"’引用的‘"’可以写成‘""’。

    ·         可以在引号前加转义字符(‘\’)。

    ·         在字符串内用‘"’引用的‘'’不需要特殊处理,不需要用双字符或转义。同样,在字符串内用‘'’引用的‘"’也不需要特殊处理。

    下面的SELECT语句显示了引用和转义如何工作:

    mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
    +-------+---------+-----------+--------+--------+
    | hello | "hello" | ""hello"" | hel'lo | 'hello |
    +-------+---------+-----------+--------+--------+
     
    mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
    +-------+---------+-----------+--------+--------+
    | hello | 'hello' | ''hello'' | hel"lo | "hello |
    +-------+---------+-----------+--------+--------+
     
    mysql> SELECT 'This\nIs\nFour\nLines';
    +--------------------+
    | This
    Is
    Four
    Lines |
    +--------------------+
     
    mysql> SELECT 'disappearing\ backslash';
    +------------------------+
    | disappearing backslash |
    +------------------------+

    如果你想要在字符串列内插入二进制数据(例如BLOB),必须通过转义序列表示下面的字符:

    NUL

    NUL字节(ASCII 0)。用‘\0’表示该字符(反斜线后面跟一个ASCII‘0’字符)。

    \

    反斜线(ASCII 92)。用‘\\’表示该字符。

    '

    单引号(ASCII 39)。用‘\'’表示该字符。

    "

    双引号(ASCII 34)。用‘\"’表示该字符。

    当编写应用程序时,在包含这些特殊字符的字符串用于发送到MySQL服务器的SQL语句中的数据值之前,必须对它们正确进行转义。可以用两种方法来完成:

    ·         用转义特殊字符的函数处理字符串。例如,在C程序中,可以使用mysql_real_escape_string() C API函数来转义字符。参见25.2.3.52节,“mysql_real_escape_string()”Perl DBI接口提供一个quote方法来将特殊字符转换为正确的转义序列。参见25.4节,“MySQL Perl API”

    ·         显式转义特殊字符,许多MySQL API提供了占位符功能,允许你在查询字符串中插入特殊标记,然后当你发出查询时将数据值同它们绑定起来。在这种情况下,API关注转义值中的特殊字符。

  • 相关阅读:
    HDU 5583 Kingdom of Black and White 水题
    HDU 5578 Friendship of Frog 水题
    Codeforces Round #190 (Div. 2) E. Ciel the Commander 点分治
    hdu 5594 ZYB's Prime 最大流
    hdu 5593 ZYB's Tree 树形dp
    hdu 5592 ZYB's Game 树状数组
    hdu 5591 ZYB's Game 博弈论
    HDU 5590 ZYB's Biology 水题
    cdoj 1256 昊昊爱运动 预处理/前缀和
    cdoj 1255 斓少摘苹果 贪心
  • 原文地址:https://www.cnblogs.com/end/p/2002516.html
Copyright © 2020-2023  润新知