服务器 频道

Mysql的字符串、数字

IT168 服务器学院
   一个字符串是一个字符序列,由单引号(“''”)或双引号(“"”)字符(后者只有你不在ANSI模式运行)包围。例如:

''a string''
"another string"

    在字符串内,某个顺序有特殊的意义。这些顺序的每一个以一条反斜线(“\”)开始,称为转义字符。MySQL识别下列转义字符:

\0
一个ASCII 0 (NUL)字符。
\n
一个新行符。
\t
一个定位符。
\r
一个回车符。
\b
一个退格符。
\''
一个单引号(“''”)符。
\"
一个双引号(“"”)符。
\\
一个反斜线(“\”)符。
\%
一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
\_
    一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。

    有几种方法在一个字符串内包括引号:

一个字符串内用“''”加引号的“''”可以被写作为“''''”。
一个字符串内用“"”加引号的“"”可以被写作为“""”。
你可以把一个转义字符(“\”)放在引号前面。
一个字符串内用“"”加引号的“''”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“''”加引号的与“"”也不需要特殊对待。
下面显示的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 |
+--------------------+
 
    如果你想要把二进制数据插入到一个BLOB列,下列字符必须由转义序列表示:

NUL
ASCII 0。你应该用''\0''(一个反斜线和一个ASCII ''0'')表示它。
\
ASCII 92,反斜线。用''\\''表示。
''
ASCII 39,单引号。用“\''”表示。
"
ASCII 34,双引号。用“\"”表示。
    如果你写C代码,你可以使用C API函数mysql_escape_string()来为INSERT语句转义字符。见20.3 C API 函数概述。在 Perl中,你可以使用DBI包中的quote方法变换特殊的字符到正确的转义序列。见20.5.2 DBI接口。

    你应该在任何可能包含上述任何特殊字符的字符串上使用转义函数!

     数字
    整数表示为一个数字顺序。浮点数使用“.”作为一个十进制分隔符。这两种类型的数字可以前置“-”表明一个负值。

有效整数的例子:

1221
0
-32

有效浮点数的例子:

294.42
-32032.6809e+10
148.00

    一个整数可以在浮点上下文使用;它解释为等值的浮点数。

    十六进制值
    MySQL支持十六进制值。在数字上下文,它们表现类似于一个整数(64位精度)。在字符串上下文,它们表现类似于一个二进制字符串,这里每一对十六进制数字被变换为一个字符。

mysql> SELECT 0xa+0
       -> 10
mysql> select 0x5061756c;
       -> Paul

   十六进制字符串经常被ODBC使用,给出BLOB列的值。

    NULL值
    NULL值意味着“无数据”并且不同于例如数字类型的0为或字符串类型的空字符串。见18.15 NULL值问题。

   当使用文本文件导入或导出格式(LOAD DATA INFILE, SELECT ... INTO OUTFILE)时,NULL可以用\N表示。见7.16 LOAD DATA INFILE句法。

   

0
相关文章