博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 4.1.0 中文参考手册 --- 6.3 用于 SELECT 和 WHERE 子句的函数 (1) (转)
阅读量:2510 次
发布时间:2019-05-11

本文共 24775 字,大约阅读时间需要 82 分钟。

MySQL 4.1.0 中文参考手册 --- 6.3 用于 SELECT 和 WHERE 子句的函数 (1) (转)[@more@] 4.1.0 中文参考手册"> words" content="MySQL,4.1.0,Shuixin13,MySQL 4.1.0,中文,中文参考手册,犬犬(心帆)"> CSS rel=STYLESHEET>

MySQL Reference Manual for version 4.1.0-alpha.


6.3 用于 WHERE 子句的

一个 SQL 语句中的 select_expressionwhere_definition 可由任何使用了下面所描述函数的组成。

包含 NULL 的表达式总是得出一个 NULL 值结果,除非表达式中的操作和函数在文档中有另外的说明。

注意:在一个函数名和跟随它的括号之间必须不存在空格。这有助于 MySQL 语法分析区分函数和对恰巧与函数同名表或列的引用。然而,参数左右两边的空格却是允许的。

你可以强制 MySQL 接受函数名后存在空格的形式,这需要通过以 --ansi 选项启动 mysqld,或在 mysql_connect() 中使用 CLIENT_IGNORE_SPACE,但是,在这种情况下,所有的函数名均将成为保留字。查看章节 运行 MySQL.

为了简洁,从 mysql 程序输出的例子以缩写的形式显示。因此:

mysql> SELECT MOD(29,9); 1 rows in set (0.00 sec) +-----------+ | mod(29,9) | +-----------+ | 2 | +-----------+

 

将被显示为这样:

mysql> SELECT MOD(29,9); -> 2

 

6.3.1 无类型的特殊运算符和函数

6.3.1.1 圆括号

( ... )

括号,使用它来强制一个表达式的计算顺序。

mysql> SELECT 1+2*3; -> 7 mysql> SELECT (1+2)*3; -> 9

 

6.3.1.2 比较运算符

比较运算符的结果是 1 (TRUE)、0 (FALSE) 或 NULL。这些函数可工作于数字和字符串上。根据需要,字符串将会自动地被转换到数字,以及数字被转换成字符串(比如在 中)。

MySQL 使用下列规则进行比较:

  • 如果一个或两个参数是 NULL,比较的结果是 NULL,除了 <=> 运算符。
  • 如果在一个比较操作中两个参数均是字符串,他们将作为字符串被比较。
  • 如果两个参数均是整数,他们作为整数被比较。
  • 十六进制值如果不与一个数字进行比较,那么它将当作一个二进制字符串。
  • 如果参数之一是一个 TIMESTAMPDATETIME 列,而另一参数是一个常数,在比较之前,这个常数被转换为一个时间戳。这样做是为了对 OC 更友好。
  • 在所有其它情况下,参数作为浮点(real)数字被比较。

缺省地,字符串使用当前字符集以忽略字母大小写的方式进行比较(缺省的字符集为 ISO-8859-1 Latin1,它对英语处理得很出色)。

下面的例子演示了对于比较操作字符串到数字的转换:

mysql> SELECT 1 > '6x'; -> 0 mysql> SELECT 7 > '6x'; -> 1 mysql> SELECT 0 > 'x6'; -> 0 mysql> SELECT 0 = 'x6'; -> 1

 
=
等于:

mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -> 1 mysql> SELECT '0.0' = 0; -> 1 mysql> SELECT '0.01' = 0; -> 0 mysql> SELECT '.01' = 0.01; -> 1

 
<>
!=
不等于:

mysql> SELECT '.01' <> '0.01'; -> 1 mysql> SELECT .01 <> '0.01'; -> 0 mysql> SELECT 'zapp' <> 'zappp'; -> 1

 
<=
小于或等于:

mysql> SELECT 0.1 <= 2; -> 1

 
<
小于:

mysql> SELECT 2 < 2; -> 0

 
>=
大于或等于:

mysql> SELECT 2 >= 2; -> 1

 
>
大于:

mysql> SELECT 2 > 2; -> 0

 
<=>
NULL 值 等于:

mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; -> 1 1 0

 
IS NULL
IS NOT NULL
测试一个值是或不是
NULL:

mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL; -> 0 0 1 mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL; -> 1 1 0

 为了能够与其它程序更好的工作,在使用 
IS NULL 是 MySQL 支持下列额外选择性:
  • 通过它,你可以找到最后插入的记录行:

    SELECT * FROM tbl_name WHERE auto_col IS NULL

    这个操作可以通过设置 SQL_AUTO_IS_NULL=0 来禁止。查看章节 . 
  • 对于 NOT NULLDATEDATETIME 列,可以通过使用下列语句找到特殊的值 0000-00-00

    SELECT * FROM tbl_name WHERE date_column IS NULL

    这需要通过某些 ODBC 应用程序才能工作(因为 ODBC 不支持一个 0000-00-00 日期) 

expr BETWEEN min AND max
如果
expr 大于或等于
min ,并且
expr 小于或等于
max
BETWEEN 返回
1,否则返回
0。它等价于表达式
(min <= expr AND expr <= max) ,只要所有的参数均是相同的类型。 否则类型会依照上面的规则发生转换,但是应用于所有三个参数。
注意,在 MySQL 4.0.5 之前,参数被转换到
expr 的类型。

mysql> SELECT 1 BETWEEN 2 AND 3; -> 0 mysql> SELECT 'b' BETWEEN 'a' AND 'c'; -> 1 mysql> SELECT 2 BETWEEN 2 AND '3'; -> 1 mysql> SELECT 2 BETWEEN 2 AND 'x-3'; -> 0

 
expr NOT BETWEEN min AND max
等同于
NOT (expr BETWEEN min AND max)

expr IN (value,...)
如果
expr
IN 列表中的作一值,它将返回
1,否则返回
0。如果所有的值均是常数,那么所有的值被依照
expr 的类型进行计算和排序。然后以一个二进制搜索方式完成项目的搜索。这就意味着,如果
IN 列表完全由常数组成,
IN 将是非常快的。如果
expr 是一个字母大小写敏感的字符串表达式,字符串比较将以大小写敏感方式执行:

mysql> SELECT 2 IN (0,3,5,'wefwf'); -> 0 mysql> SELECT 'wefwf' IN (0,3,5,'wefwf'); -> 1

从 MySQL 4.1 开始(符合 SQL-99 标准),如果左手边的表达式是 
NULL,或者在列表中没有发现相匹配的值并且列表中的一个表达式是
NULL
IN 均返回
NULL

expr NOT IN (value,...)
等同于
NOT (expr IN (value,...))

ISNULL(expr)
如果
expr
NULL
ISNULL() 返回
1,否则返回
0

mysql> SELECT ISNULL(1+1); -> 0 mysql> SELECT ISNULL(1/0); -> 1

注意,对 
NULL 值使用
= 进行比较总是为 false !
COALESCE(list)
返回列表中第一个非
NULL 的元素:

mysql> SELECT COALESCE(NULL,1); -> 1 mysql> SELECT COALESCE(NULL,NULL,NULL); -> NULL

 
INTERVAL(N,N1,N2,N3,...)
Returns 如果
N <
N1 返回
0,如果
N <
N2 返回
1,等等。所有的参数均被当作整数。为了函数能正确地工作,它要求
N1 <
N2 <
N3 <
... <
Nn。这是因为它使用的是一个二进制的搜索(非常地快):

mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200); -> 3 mysql> SELECT INTERVAL(10, 1, 10, 100, 1000); -> 2 mysql> SELECT INTERVAL(22, 23, 30, 44, 200); -> 0

 

如果以任何一个标准运算符(=, <>..., 但除了 LIKE)对一个忽略大小写的字符串进行比较,尾部的空白空间(空格、TAB 和换行)均被忽略。

mysql> SELECT "a" ="A n"; -> 1

 

6.3.1.3 逻辑运算符

在 SQL 中,所有的逻辑运算符返回的值均为 TRUE、FALSE 或 NULL (未知)。在 MySQL 中,它们由 1 (TRUE)、0 (FALSE) 和 NULL 实现。这些大部分在不同的 SQL 间是相同的,然而某些可能会以一个非零值返回 TRUE。

NOT
!
逻辑非。如果操作数为
0,返回
1;如果操作数为非零,返回
0;如果操作数为
NOT NULL,返回
NULL

mysql> SELECT NOT 10; -> 0 mysql> SELECT NOT 0; -> 1 mysql> SELECT NOT NULL; -> NULL mysql> SELECT ! (1+1); -> 0 mysql> SELECT ! 1+1; -> 1

最后一个例子返回 
1,因为表达式是与
(!1)+1 一样被计算的。

AND
&&
逻辑与。如果所有的操作数都是非零或非
NULL 的,返回
1;如果有一个或多个操作数为
0 ,则返回
0,只要操作数中有
NULL 返回值就为
NULL

mysql> SELECT 1 && 1; -> 1 mysql> SELECT 1 && 0; -> 0 mysql> SELECT 1 && NULL; -> NULL mysql> SELECT 0 && NULL; -> 0 mysql> SELECT NULL && 0; -> 0

请注意,在 MySQL 4.0.5 以前版本中,当遇到一个 
NULL 时就停止计算,而不是继续进程检查可能存在的
0。这就意味着,在这些版本中,
SELECT (NULL AND 0) 返回
NULL,而不是
0。在 4.0.5 中,代码已被重新设计了,已便于在任何仍然使用 情况下,返回值总是能如 ANSI 所规定的那样。
OR
||
逻辑或。如果任何一个操作数是非零的,返回值为
1,如果任一操作数为
NULL,返回值为
NULL,否则返回
0

mysql> SELECT 1 || 1; -> 1 mysql> SELECT 1 || 0; -> 1 mysql> SELECT 0 || 0; -> 0 mysql> SELECT 0 || NULL; -> NULL mysql> SELECT 1 || NULL; -> 1

 
XOR
逻辑异或。如果任一操作数为
NULL,返回值为
NULL。对于非
NULL 的操作数,如果有奇数个非零的操作数,结果返回为
1,否则返回
0

mysql> SELECT 1 XOR 1; -> 0 mysql> SELECT 1 XOR 0; -> 1 mysql> SELECT 1 XOR NULL; -> NULL mysql> SELECT 1 XOR 1 XOR 1; -> 1

 
a XOR b 算术相等于
(a AND (NOT b)) OR ((NOT a) and b)
XOR 在 MySQL 4.0.2 中被添加。

6.3.1.4 控制流函数

IFNULL(expr1,expr2)
如果
expr1 为非
NULL 的,
IFNULL() 返回
expr1,否则返回
expr2
IFNULL() 返回一个数字或字符串值,这取决于它被使用的语境:

mysql> SELECT IFNULL(1,0); -> 1 mysql> SELECT IFNULL(NULL,10); -> 10 mysql> SELECT IFNULL(1/0,10); -> 10 mysql> SELECT IFNULL(1/0,'yes'); -> 'yes'

在 MySQL 4.0.6 和 版本中, 
IFNULL(expr1,expr2) 的默认返回值以
STRING
REAL
INTEGER 顺序更加'general'了两个表达式。当你基于一个表达式创建一个表或在一个临时表中 MySQL 不得不 一个从
IFNULL() 返回的值时,这个与较早 MySQL 版本的不同将更加值得注意。

CREATE TABLE foo SELECT IFNULL(1,"test") as test;

在 MySQL 4.0.6 中,列 'test' 的类型为 
CHAR(4),然而在较早的版本中,你得到的却是
BIGINT

NULLIF(expr1,expr2)
如果
expr1 = expr2 为真,返回
NULL,否则返回
expr1。它等同于
CASE WHEN x = y THEN NULL ELSE x END

mysql> SELECT NULLIF(1,1); -> NULL mysql> SELECT NULLIF(1,2); -> 1

注意,如果参数不相等,在 MySQL 中, 
expr1 被求值两次。

IF(expr1,expr2,expr3)
如果
expr1 为真(
expr1 <> 0 以及
expr1 <> NULL),那么
IF() 返回
expr2,否则返回
expr3
IF() 返回一个数字或字符串,这取决于它被使用的语境:

mysql> SELECT IF(1>2,2,3); -> 3 mysql> SELECT IF(1<2,'yes','no'); -> 'yes' mysql> SELECT IF(STRCMP('test','test1'),'no','yes'); -> 'no'

如果 
expr2
expr3 明确地为
NULL,那么函数
IF() 的返回值类型为非
NULL 列的类型。(这在选择在 MySQL 4.0.3 中新加入)。
expr1 是作为一个整数值被计算的,这就意味着,如果测试的是一个浮点型或字符串值,就必须进行比较操作:

mysql> SELECT IF(0.1,1,0); -> 0 mysql> SELECT IF(0.1<>0,1,0); -> 1

在上面第一种情况下, 
IF(0.1) 返回
0,是因为
0.1 被转换为一个整数值,返回
IF(0) 的测试结果。这可能不是你所期望的。在第二种情况下,比较测试原浮点数是否为一个非零值。比较的结果被作为整数使用。缺省的
IF() 返回值类型 (当结果存储在临时表中时,这是非常重要的) 在 MySQL 3.23 中按下列方式确定:
表达式
返回值 表达式(expr2)或表达式(expr3)返回值为字符串 字符串 表达式(expr2)或表达式(expr3)返回值为浮点型值 浮点型 表达式(expr2)或表达式(expr3)返回值为整型 整型 如果表达式(expr2)和表达式(expr3)均是字符串,同时两个字符串均是忽略字母大小写的,那么返回值也是忽略字母大小写的(从 MySQL 3.23.51 开始)。

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
第一个形式当
value=compare-value 时返回
result。第二个形式当第一个为真值的
condition 出现时,返回该条件的结果。如果没有匹配的结果值,那么
ELSE 后的结果将被返回。如果没有
ELSE 部分,那么
NULL 被返回:

mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END; -> "one" mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END; -> "true" mysql> SELECT CASE BINARY "B" WHEN "a" THEN 1 WHEN "b" THEN 2 END; -> NULL

 

返回值的类型 (INTEGERDOUBLESTRING) 与第一个返回值(第一个 THEN 后的表达式)的类型相同。

6.3.2 字符串函数

如果返回结果的长度超过参数 max_allowed_packet 的大小,字符串值函数将返回 NULL。查看章节 。

对于操作字符串位置的函数,第一个位置被标记为 1。

ASCII(str)
返回字符串
str 最左边的那个字符的 ASCII 码值。如果
str 是一个空字符串,那么返回值为
0。如果
str 是一个
NULL,返回值也是
NULL

mysql> SELECT ASCII('2'); -> 50 mysql> SELECT ASCII(2); -> 50 mysql> SELECT ASCII('dx'); -> 100

也可参看 
ORD() 函数。

ORD(str)
如果字符串
str 的最左边的字符是一个多字节的字符,根据多字节字符的成分字符的 ASCII 码值通过下面的公式计算返回那个的编码:
((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]。如果最左边的字符不是一个多字节字符,返回值与
ASCII() 函数相同:

mysql> SELECT ORD('2'); -> 50

 
CONV(N,from_base,to_base)
在不同的数字基数之间转换数字。将数字
N
from_base 转换到
to_base,并以字符串表示形式返回。如果任何一个参数为
NULL,那么返回值也为
NULL。参数
N 被解释为是一个整数,但是也可以被指定为一个整数或一个字符串。最小基为
2,最大基为
36。如果
to_base 是一个负值,
N 将被看作为是一个有符号数字。否则,
N 被视为是无符号的。
CONV 以 64 位精度工作:

mysql> SELECT CONV("a",16,2); -> '1010' mysql> SELECT CONV("6E",18,8); -> '172' mysql> SELECT CONV(-17,10,-18); -> '-H' mysql> SELECT CONV(10+"10"+'10'+0xa,10,10); -> '40'

 
BIN(N)
返回
N 的字符串表示的二进制值形式,在这里,
N 长长的(
BIGINT)数字。这个函数等价于
CONV(N,10,2)。如果
N 是一个
NULL,返回值也是
NULL

mysql> SELECT BIN(12); -> '1100'

 
OCT(N)
返回
N 的字符串表示的八进制值形式,在这里,
N 是一个长长的数字。这个函数等价于
CONV(N,10,8)。如果
N 是一个
NULL,返回值也是
NULL

mysql> SELECT OCT(12); -> '14'

 
HEX(N_or_S)
如果 N_OR_S 是一个数字,返回
N 的字符串表示的十六进制值形式,这里
N 是一个长长的(
BIGINT)数字。这个函数等价于
CONV(N,10,16)。如果 N_OR_S 是一个字符串,N_OR_S 中的每个字符均被转换为 2 位十六进制数字,并以十六进制的字符串形式返回。这是
0xff 形式的字符串反转操作。

mysql> SELECT HEX(255); -> 'FF' mysql> SELECT HEX("abc"); -> 616263 mysql> SELECT 0x616263; -> "abc"

 
CHAR(N,...)
CHAR() 以整数类型解释参数,返回这个整数所代表的 ASCII 码值给出的字符组成的字符串。
NULL 值将被忽略:

mysql> SELECT CHAR(77,121,83,81,'76'); -> 'MySQL' mysql> SELECT CHAR(77,77.3,'77.3'); -> 'MMM'

 
CONCAT(str1,str2,...)
将参数连接成字符串返回。如果有任何一个参数为
NULL,返回值也为
NULL。可以有超过 2 个的参数。数字参数将被转换为相等价的字符串形式:

mysql> SELECT CONCAT('My', 'S', 'QL'); -> 'MySQL' mysql> SELECT CONCAT('My', NULL, 'QL'); -> NULL mysql> SELECT CONCAT(14.3); -> '14.3'

 
CONCAT_WS(separator, str1, str2,...)
CONCAT_WS() 支持 CONCAT 加上一个分隔符,它是一个特殊形式的
CONCAT()。第一个参数剩余参数间的分隔符。分隔符可以是与剩余参数一样的字符串。如果分隔符是
NULL,返回值也将为
NULL。这个函数会跳过分隔符参数后的任何
NULL 和空字符串。分隔符将被加到被连接的字符串之间:

mysql> SELECT CONCAT_WS(",","First name","Second name","Last Name"); -> 'First name,Second name,Last Name' mysql> SELECT CONCAT_WS(",","First name",NULL,"Last Name"); -> 'First name,Last Name'

 
LENGTH(str)
OCTET_LENGTH(str)
CHAR_LENGTH(str)
CHARACTER_LENGTH(str)
返回字符串
str 的长度:

mysql> SELECT LENGTH('text'); -> 4 mysql> SELECT OCTET_LENGTH('text'); -> 4

注意, 
CHAR_LENGTH()
CHARACTER_LENGTH() 对于多字节字符只计数一次。

BIT_LENGTH(str)
返回字符串
str 的比特长度:

mysql> SELECT BIT_LENGTH('text'); -> 32

 
LOCATE(substr,str)
POSITION(substr IN str)
返回子串
substr 在字符串
str 中第一次出现的位置。如果子串
substr
str 中不存在,返回值为
0

mysql> SELECT LOCATE('bar', 'foobarbar'); -> 4 mysql> SELECT LOCATE('xbar', 'foobar'); -> 0

这个函数是多字节安全的。在 MySQL 3.23 中,这个函数是字母大小写敏感的,当在 MySQL 4.0 中时,如有任一参数是一个二进制字符串,它才是字母大小写敏感的。 

LOCATE(substr,str,pos)
返回子串
substr 在字符串
str 中的第
pos 位置后第一次出现的位置。如果
substr 不在
str 中返回
0

mysql> SELECT LOCATE('bar', 'foobarbar',5); -> 7

这个函数是多字节安全的。在 MySQL 3.23 中,这个函数是字母大小写敏感的,当在 MySQL 4.0 中时,如有任一参数是一个二进制字符串,它才是字母大小写敏感的。 

INSTR(str,substr)
返回子串
substr 在字符串
str 中第一次出现的位置。这与有两个参数形式的
LOCATE() 相似,只是参数的位置被颠倒了:

mysql> SELECT INSTR('foobarbar', 'bar'); -> 4 mysql> SELECT INSTR('xbar', 'foobar'); -> 0

这个函数是多字节安全的。在 MySQL 3.23 中,这个函数是字母大小写敏感的,当在 MySQL 4.0 中时,如有任一参数是一个二进制字符串,它才是字母大小写敏感的。 

LPAD(str,len,padstr)
用字符串
padstr
str 进行左边填补直至它的长度达到
len 个字符长度,然后返回
str。如果
str 的长度长于
len',那么它将被截除到
len 个字符。

mysql> SELECT LPAD('hi',4,'??'); -> '??hi'

 
RPAD(str,len,padstr)
用字符串
padstr
str 进行右边填补直至它的长度达到
len 个字符长度,然后返回
str。如果
str 的长度长于
len',那么它将被截除到
len 个字符。

mysql> SELECT RPAD('hi',5,'?'); -> 'hi???'

 
LEFT(str,len)
返回字符串
str 中最左边的
len 个字符:

mysql> SELECT LEFT('foobarbar', 5); -> 'fooba'

这个函数是多字节安全的。 

RIGHT(str,len)
返回字符串
str 中最右边的
len 个字符:

mysql> SELECT RIGHT('foobarbar', 4); -> 'rbar'

这个函数是多字节安全的。 

SUBSTRING(str,pos,len)
SUBSTRING(str FROM pFOR len)
MID(str,pos,len)
从字符串
str
pos 位置起返回
len 个字符的子串。使用
FROM 的变体形式是 ANSI SQL92 的句法:

mysql> SELECT SUBSTRING('Quadratically',5,6); -> 'ratica'

这个函数是多字节安全的。 

SUBSTRING(str,pos)
SUBSTRING(str FROM pos)
从字符串
str
pos 位置起返回子串:

mysql> SELECT SUBSTRING('Quadratically',5); -> 'ratically' mysql> SELECT SUBSTRING('foobarbar' FROM 4); -> 'barbar'

这个函数是多字节安全的。 

SUBSTRING_INDEX(str,delim,count)
返回字符串
str 中在第
count 个出现的分隔符
delim 之前的子串。如果
count 是一个正数,返回从最后的(从左边开始计数)分隔符到左边所有字符。如果
count 是负数,返回从最后的(从右边开始计数)分隔符到右边所有字符:

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); -> 'www.mysql' mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); -> 'mysql.com'

这个函数是多字节安全的。 

LTRIM(str)
返回移除了领头的空格字符后的
str

mysql> SELECT LTRIM(' barbar'); -> 'barbar'

 

RTRIM(str)
返回移除了尾部的空格字符后的
str

mysql> SELECT RTRIM('barbar '); -> 'barbar'

这个函数是多字节安全的。 

TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
移除字符串
str 中所有的
remstr 前缀或后缀,然后将其返回。如果没有任何
BOTH
LEADING
TRAILING 修饰符被给出,
BOTH 被假定。如果
remstr 没有被指定,空格将被移除:

mysql> SELECT TRIM(' bar '); -> 'bar' mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx'); -> 'barxxx' mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx'); -> 'bar' mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz'); -> 'barx'

这个函数是多字节安全的。 

SOUNDEX(str)
返回
str 的近音字。两个发音差不多的字符串应该有同样的近音字。一个标准的近音字为 4 个字符长,但是函数
SOUNDEX() 却返回一个任意长的字符串。你可以在结果上使用
SUBSTRING() 标准的近音字。提供的字符中所有的非数字字母的字符均被忽略。所有在 A-Z 范围之外的国际 alpha 字符被视为元音:

mysql> SELECT SOUNDEX('Hello'); -> 'H400' mysql> SELECT SOUNDEX('Quadratically'); -> 'Q36324'

 

SPACE(N)
返回有
N 空格字符组成的字符串:

mysql> SELECT SPACE(6); -> ' '

 

REPLACE(str,from_str,to_str)
在字符串
str 中所有出现的字符串
from_str 均被
to_str替换,然后返回这个字符串:

mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww'); -> 'WwWwWw.mysql.com'

这个函数是多字节安全的。 

REPEAT(str,count)
返回一个由重复了
count 次的字符串
str 组成的字符串。如果
count <= 0,返回一个空字符串。如果
str
count
NULL,返回值也为
NULL

mysql> SELECT REPEAT('MySQL', 3); -> 'MySQLMySQLMySQL'

 

REVERSE(str)
以颠倒的字符顺序返回字符串
str

mysql> SELECT REVERSE('abc'); -> 'cba'

这个函数是多字节安全的。 

INSERT(str,pos,len,newstr)
在字符串
str 中,将从
pos 位置开始,
len 个字符长的子串替换为字符串
newstr ,然后将结果返回:

mysql> SELECT INSERT('Quadratic', 3, 4, 'What'); -> 'QuWhattic'

这个函数是多字节安全的。 

ELT(N,str1,str2,str3,...)
如果
N =
1,返回
str1,如果
N =
2,返回
str2,等等。如果
N 小于
1 或大于参数的数量,返回
NULL
ELT()
FIELD() 反运算:

mysql> SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo'); -> 'ej' mysql> SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo'); -> 'foo'

 

FIELD(str,str1,str2,str3,...)
返回
str 在列表
str1,
str2,
str3,
... 中的 。如果
str 没有发现,返回
0
FIELD()
ELT() 的反运算:

mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo'); -> 2 mysql> SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo'); -> 0

 

FIND_IN_SET(str,strlist)
Returns a value 如果字符串
str 在由
N 个子串组成的列表
strlist 中,返回一个
1
N 的值。一个字符串列表是由通过字符
“,” 分隔的多个子串组成。如果第一个参数是一个常数字符串,并且第二个参数是一个
SET 列类型,
FIND_IN_SET() 函数将被优化为使用位运算!如果
str 在不
strlist 中或者如果
strlist 是一个空串,返回值为
0。如果任何一个参数为
NULL,返回值也是
NULL。如果第一个参数包含一个
“,”,这个函数将完全不能工作:

mysql> SELECT FIND_IN_SET('b','a,b,c,d'); -> 2

 

MAKE_SET(bits,str1,str2,...)
返回一个集合 (包含由字符
“,” 分隔的多个子串组成的一个字符串),它由在
bits 集合中有相应的比特位的字符串组成。
str1 对应于比特位 0,
str2 对应比特位 1,等等。在
str1,
str2,
... 中的
NULL 串不允许被添加到结果中:

mysql> SELECT MAKE_SET(1,'a','b','c'); -> 'a' mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world'); -> 'hello,world' mysql> SELECT MAKE_SET(0,'a','b','c'); -> ''

 

EXPORT_SET(bits,on,off,[separator,[number_of_bits]])
返回一个字符串,对于在 'bits' 中的每个比特字位,你将得到一个 'on' 字符,而如果比特字位是一个清零比特位(reset bit)你将得到一个 'off' 字符串。每个字符串均被“分隔符”(缺省为“,”)分隔,并且只有 'number_of_bits'(缺省为 64) 个 'bits' 被使用:

mysql> SELECT EXPORT_SET(5,'Y','N',',',4) -> Y,N,Y,N

 
示例(译者注):

mysql> select EXPORT_SET(1,'1','0','',5); -> 10000 # 最左边第一位为 2 的 0 次幂 mysql> select EXPORT_SET(2,'1','0','',5); -> 01000 # 最左边第一位为 2 的 0 次幂,第二位为 2 的 1 次幂 mysql> select EXPORT_SET(4,'1','0','',5); -> 00100 # 最左边第一位为 2 的 0 次幂,第二位为 2 的 1 次幂,第三位为 2 的 2 次幂 mysql> select EXPORT_SET(15,'1','0','',5); -> 11110 # 最左边第一位为 2 的 1 次幂,第四位为 2 的 3 次幂 mysql> select EXPORT_SET(16,'1','0','',5); -> 00001 # 最左边第一位为 2 的 1 次幂,第五位为 2 的 4 次幂 # 以上结果在 MySQL 4.0.12 中测试通过

 
示例结束(译者注)

LCASE(str)
LOWER(str)
依照当前字符集设置映射(缺省为 ISO-8859-1 Latin1),将字符串
str 中的所有字符改变为小写,然后返回该值:

mysql> SELECT LCASE('QUADRATICALLY'); -> 'quadratically'

这个函数是多字节安全的。 

UCASE(str)
UPPER(str)
依照当前字符集设置映射(缺省为 ISO-8859-1 Latin1),将字符串
str 中的所有字符改变为大写,然后返回该值:

mysql> SELECT UCASE('Hej'); -> 'HEJ'

这个函数是多字节安全的。 

LOAD_FILE(file_name)
读入 ,并将文件内容作为一个字符串返回。这个文件必须在服务器上,必须指定文件完整的路径名,并且你必须有
FILE 。文件必须完全可读,并且小于
max_allowed_packet。如果该文件不存在,或因为上面的任一原因而不能被读出,函数返回
NULL

mysql> UPDATE tbl_name SET blob_column=LOAD_FILE("/tmp/picture") WHERE id=1;

如果你没有使用 MySQL 3.23,你不得不在你的应用程序中读取文件,以文件的信息创建一个 
INSERT 语句,来更新数据库。如果你使用 MySQL++ 库,下面有一个示例,详细请查看 。

QUOTE(str)
引用一个字符串,并返回一个结果,该结果可作为一个适当转义过的数据值在一个 SQL 语句中使用。字符串被单引号包围着返回,并且在该字符串中每个单引号(
“'”)、反斜线符号(
“”)、ASCII NUL 和 Control-Z 出现的地方,在该字符之前均被加上了一个反斜线。如果参数是
NULL,那么结果值是一个没有单引号包围的单词 “NULL”。
QUOTE 函数在 MySQL 4.0.3 中被加入。

mysql> SELECT QUOTE("Don't"); -> 'Don't!' mysql> SELECT QUOTE(NULL); -> NULL

 

6.3.2.1 字符串比较函数

在必要的时候,MySQL 会自动地将数字转换到字符串,反之亦然:

mysql> SELECT 1+"1"; -> 2 mysql> SELECT CONCAT(2,' test'); -> '2 test'

 

如果你希望明确地将一个数字转换为字符串,将它参数传递到 CONCAT() 中。

如果将一个二进制字符串作为参数传递给一个字符串函数,结果返回也是一个二进制字符串。一个数字被转换到字符串,该字符串被视为是一个二进制字符串。这仅仅会影响结果。

通常,只要字符串比较中的任何一个表达式是区分大小写的,比较就会以字母大小写敏感方式执行。

expr LIKE pat [ESCAPE 'escape-char']
使用 SQL 的简单的正规表达式进行比较的模式匹配。返回
1 (TRUE) 或
0 (FALSE)。可以在模式中使用下面所示的两个通配符字符与
LIKE 配合:
字符
含义
% 匹配任意多个字符,甚至是零个字符
_ 严格地匹配一个字符

mysql> SELECT 'David!' LIKE 'David_'; -> 1 mysql> SELECT 'David!' LIKE '%D%v%'; -> 1

为了测试一个含有通配符的文字实例,可以用转义符加在能配符前。如果没有明确指定 
ESCAPE 字符,假定为
“”
字符串
含义
% 匹配一个
% 字符
_ 匹配一个
_ 字符

mysql> SELECT 'David!' LIKE 'David_'; -> 0 mysql> SELECT 'David_' LIKE 'David_'; -> 1

为了指定一个不同的转义字符,可以使用 
ESCAPE 子句:

mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|'; -> 1

下面两个语句表明,字符串比较是忽略大小写的,除非任一操作数是一个二进制字符串: 

mysql> SELECT 'abc' LIKE 'ABC'; -> 1 mysql> SELECT 'abc' LIKE BINARY 'ABC'; -> 0

 
LIKE 允许用在一个数字表达式上。(这是 MySQL 对 ANSI SQL
LIKE 的扩展。)

mysql> SELECT 10 LIKE '1%'; -> 1

注意:因为 MySQL 在字符串中使用的是 C 的转义句法(例如 
“n”),所以在
LIKE 字符串中使用的任何一个
“” 必须被双写。例如,为了查找
“n”,必须以
“n” 形式指定它。为了查找
“”,必须指定它为
“” (反斜线被语法分析器剥离一次,另一次在模式匹配时完成,留下一条单独的反斜线被匹配)。

expr NOT LIKE pat [ESCAPE 'escape-char']
相同于
NOT (expr LIKE pat [ESCAPE 'escape-char'])

expr SOUNDS LIKE expr
等同于
SOUNDEX(expr)=SOUNDEX(expr) (适用于 MySQL 4.1 或更新的版本)。

expr REGEpat
expr RLIKE pat
依照模式
pat 对字符串表达式
expr 执行一个模式比较。模式可以是一个扩展的正则表达式。查看章节 。Returns 如果表达式
expr 匹配
pat,返回
1,否则返回
0
RLIKE
REGEXP 的同义词,它提供了与
mSQL 的兼容。注意:MySQL 在字符串中使用的是 C 的转义句法(例如
“n”),所以在
REGEXP 字符串中使用的任何一个
“” 必须被双写。在 MySQL 3.23.4 中,
REGEXP 对于正常的(不是二进制)字符串是忽略大小写的:

mysql> SELECT 'Monty!' REGEXP 'm%y%%'; -> 0 mysql> SELECT 'Monty!' REGEXP '.*'; -> 1 mysql> SELECT 'new*n*line' REGEXP 'new*.*line'; -> 1 mysql> SELECT "a" REGEXP "A", "a" REGEXP BINARY "A"; -> 1 0 mysql> SELECT "a" REGEXP "^[a-d]"; -> 1

当决定一个字符的类型时, 
REGEXP
RLIKE 使用当前使用的字符集(缺省为 ISO-8859-1 Latin1)。

expr NOT REGEXP pat
expr NOT RLIKE pat
等同于
NOT (expr REGEXP pat)

STRCMP(expr1,expr2)
如果字符串是相同,
STRCMP() 返回
0,如果第一个参数根据当前排序次序小于第二个参数,返回
-1,否则返回
1

mysql> SELECT STRCMP('text', 'text2'); -> -1 mysql> SELECT STRCMP('text2', 'text'); -> 1 mysql> SELECT STRCMP('text', 'text'); -> 0

 

MATCH (col1,col2,...) AGAINST (expr)
MATCH (col1,col2,...) AGAINST (expr IN BOOLEAN MODE)
MATCH ... AGAINST() 用于全文搜索,返回在列
(col1,col2,...) 和查询
expr 之间文本的相关相似的尺度。相关性是一个正的浮点型数字。零相关性意味着不相似。
MATCH ... AGAINST() 可用于 MySQL 3.23.23 或更新的版本中。
IN BOOLEAN MODE 扩展在 MySQL 4.0.1 中被新加入。详细描述和使用范例,请查看 。

6.3.2.2 字母大小写敏感性

BINARY
BINARY 操作符将跟在它后面的字符串强制作为一个二进制字符串。这可以很容易地强制一个列的比较以字母大小写敏感方式进行,即使该列没有定义为
BINARY
BLOB?

mysql> SELECT "a" = "A"; -> 1 mysql> SELECT BINARY "a" = "A"; -> 0

 
BINARY string
CAST(string AS BINARY) 的缩写。查看章节 。
BINARY 在 MySQL 3.23.0 中被加入。注意,当将一个索引列强制为
BINARY 时,在某些语境中,MySQL 将不能有效地使用索引。

如果希望对一个 blob 进行忽略字母大小的比较时,你通常可以在比较前将它转换到大写:

SELECT 'A' LIKE UPPER(blob_col) FROM table_name;

 

我们计划不久推出在不同字符集间的转化,以使字符串比较有更好的伸缩性。

6.3.3 数字函数

6.3.3.1 算术运算

常用的算术操作符均是可用的。注意,如果两个参数均是整型,`-', `+'`*'BIGINT (64 位)精度运算并返回结果!如果一个参数是一个无符号的整数,另一个参数也是一个整数,结果也将是一个无符号整数。查看章节 。

+
加法:

mysql> SELECT 3+5; -> 8

 
-
减法:

mysql> SELECT 3-5; -> -2

 
*
乘法:

mysql> SELECT 3*5; -> 15 mysql> SELECT 18014398509481984*18014398509481984.0; -> 324518553658426726783156020576256.0 mysql> SELECT 18014398509481984*18014398509481984; -> 0

最后一个表达式的结果是错误的,这是因为乘法结果超过了 64 位 
BIGINT 计算范围。
/
除法:

mysql> SELECT 3/5; -> 0.60

被 0 除将返回一个 
NULL 结果:

mysql> SELECT 102/(1-1); -> NULL

只有当在一个结果被转换到一个整数的语境中执行时,除法将会以 
BIGINT 进行算术计算。

6.3.3.2 数学函数

所有的数学函数在发生错误的情况下,均返回 NULL

-
一元减。 改变参数的符号:

mysql> SELECT - 2; -> -2

注意,如果这个操作符被用于一个 
BIGINT,返回值也是一个
BIGINT!这就意味着,应该避免在一个可能有值
-2^63 的整数上使用
- 操作符!

ABS(X)
返回
X 的绝对值:

mysql> SELECT ABS(2); -> 2 mysql> SELECT ABS(-32); -> 32

这个函数可安全地使用于 
BIGINT 值。

SIGN(X)
-1
0
1 方式返回参数的符号,它取决于参数
X 是负数、0 或正数。

mysql> SELECT SIGN(-32); -> -1 mysql> SELECT SIGN(0); -> 0 mysql> SELECT SIGN(234); -> 1

 
MOD(N,M)
%
取模 (就如 C 中的
% 操作符)。返回
N
M 除后的余数:

mysql> SELECT MOD(234, 10); -> 4 mysql> SELECT 253 % 7; -> 1 mysql> SELECT MOD(29,9); -> 2 mysql> SELECT 29 MOD 9; -> 2

这个函数可安全地使用于 
BIGINT 值。最后一个示例可在 MySQL 4.1 中工作。

FLOOR(X)
返回不大于
X 的最大整数值:

mysql> SELECT FLOOR(1.23); -> 1 mysql> SELECT FLOOR(-1.23); -> -2

注意,返回值被转换为一个 
BIGINT

CEILING(X)
返回不小于
X 的最小整数:

mysql> SELECT CEILING(1.23); -> 2 mysql> SELECT CEILING(-1.23); -> -1

注意,返回值被转换为一个 
BIGINT

ROUND(X)
ROUND(X,D)
将参数
X 四舍五入到最近的整数,然后返回。两个参数的形式是将一个数字四舍五入到
D 个小数后返回。

mysql> SELECT ROUND(-1.23); -> -1 mysql> SELECT ROUND(-1.58); -> -2 mysql> SELECT ROUND(1.58); -> 2 mysql> SELECT ROUND(1.298, 1); -> 1.3 mysql> SELECT ROUND(1.298, 0); -> 1

注意,当参数在两个整数之间时, 
ROUND() 的行为取决于 C 库的实现。某些取整到最近的偶数,总是向下取,总是向上取,也可能总是接近于零。如果你需要某种取整类型,应该使用一个明确定义的函数比如
TRUNCATE()
FLOOR() 代替。

DIV
整除。类似于
FLOOR(),但是它可安全地用于
BIGINT 值。

mysql> SELECT 5 DIV 2 -> 2

 
DIV 在 MySQL 4.1.0 中新加入。

EXP(X)
返回值
e (自然对数的底) 的
X 次方:

mysql> SELECT EXP(2); -> 7.389056 mysql> SELECT EXP(-2); -> 0.135335

 
LN(X)
返回
X 的自然对数:

mysql> SELECT LN(2); -> 0.693147 mysql> SELECT LN(-2); -> NULL

这个函数在 MySQL 4.0.3 被新加入。在 MySQL 中,它是 
LOG(X) 的同义词。

LOG(X)
LOG(B,X)
如果以一个参数调用,它返回
X 的自然对数:

mysql> SELECT LOG(2); -> 0.693147 mysql> SELECT LOG(-2); -> NULL

如果以两个参数调用,这个函数返回 
X 任意底
B 的对数:

mysql> SELECT LOG(2,65536); -> 16.000000 mysql> SELECT LOG(1,100); -> NULL

任意底选项在 MySQL 4.0.3 中被加入。 
LOG(B,X) 等价于
LOG(X)/LOG(B)

LOG2(X)
返回
X 的以 2 为底的对数:

mysql> SELECT LOG2(65536); -> 16.000000 mysql> SELECT LOG2(-100); -> NULL

 
LOG2() 通常可以用于计数出一个数字需要多少个比特位用于存储它。这个函数在 MySQL 4.0.3 中被添加。在更早的版本中,可以使用
LOG(X)/LOG(2) 来代替它。

LOG10(X)
返回
X 以 10 为底的对数:

mysql> SELECT LOG10(2); -> 0.301030 mysql> SELECT LOG10(100); -> 2.000000 mysql> SELECT LOG10(-100); -> NULL

 
POW(X,Y)
POWER(X,Y)
返回
X
Y 幂:

mysql> SELECT POW(2,2); -> 4.000000 mysql> SELECT POW(2,-2); -> 0.250000

 
SQRT(X)
返回
X 的非否平方根:

mysql> SELECT SQRT(4); -> 2.000000 mysql> SELECT SQRT(20); -> 4.472136

 
PI()
返回 PI 值(圆周率)。缺少显示 5 位小数,但是在 MySQL 内部,为 PI 使用全部的双精度。

mysql> SELECT PI(); -> 3.141593 mysql> SELECT PI()+0.000000000000000000; -> 3.141592653589793116

 
COS(X)
返回
X 的余弦,在这里,
X 以弧度给出:

mysql> SELECT COS(PI()); -> -1.000000

 
SIN(X)
返回
X 的正弦,在这里,
X 以弧度给出:

mysql> SELECT SIN(PI()); -> 0.000000

 
TAN(X)
返回
X 的正切,在这里,
X 以弧度给出:

mysql> SELECT TAN(PI()+1); -> 1.557408

 
ACOS(X)
返回
X 的反余弦,更确切地说,返回余弦值为
X 的值。如果
X 不在
-1
1 之间的范围内,返回
NULL

mysql> SELECT ACOS(1); -> 0.000000 mysql> SELECT ACOS(1.0001); -> NULL mysql> SELECT ACOS(0); -> 1.570796

 
ASIN(X)
返回
X 的反正弦,更确切地说,返回正弦值为
X 的值。如果
X 不在
-1
1 之间的范围内,返回
NULL

mysql> SELECT ASIN(0.2); -> 0.201358 mysql> SELECT ASIN('foo'); -> 0.000000

 
ATAN(X)
返回
X 的反正切, 更确切地说,返回正切值为
X 的值:

mysql> SELECT ATAN(2); -> 1.107149 mysql> SELECT ATAN(-2); -> -1.107149

 
ATAN(Y,X)
ATAN2(Y,X)
返回两个变量
X
Y 的反正切。它类似于计算
Y / X 的反正切,除了两个参数的符号用于决定结果的象限:

mysql> SELECT ATAN(-2,2); -> -0.785398 mysql> SELECT ATAN2(PI(),0); -> 1.570796

 
COT(X)
返回
X 的余切:

mysql> SELECT COT(12); -> -1.57267341 mysql> SELECT COT(0); -> NULL

 
RAND()
RAND(N)
返回一个范围在
0
1.0 之间的随机浮点值。如果一个整数参数
N 被指定,它被当做种子值使用(用于产生一个可重复的数值):

mysql> SELECT RAND(); -> 0.9233482386203 mysql> SELECT RAND(20); -> 0.15888261251047 mysql> SELECT RAND(20); -> 0.15888261251047 mysql> SELECT RAND(); -> 0.63553050033332 mysql> SELECT RAND(); -> 0.70100469486881

在一个 
ORDER BY 子句中,不可以使用
RAND() 值使用一个列,因为
ORDER BY 将多次重复计算列。从 MySQL 3.23 开始,你可以使用:
SELECT * FROM table_name ORDER BY RAND(),这有利于得到一个来自
SELECT * FROM table1,table2 WHERE a=b AND c 的集合中的随机样本。注意,在一个 WHERE 子句中的 RAND() 将在每次 WHERE 执行时被重新计算。 RAND() 并不是预期完美的随机数发生器,但是可以代替做为产生特别的随机数一个的方法,这样便于在两个不同平台下的同一 MySQL 版本间移动。

LEAST(X,Y,...)
有两个或更多个参数,返回最小(最小值)的参数。参数使用下列规则进行比较:
如果返回值用于一个 INTEGER 语境,或所有的参数是整数值,它们作为整数比较。 如果返回值用于一个 REAL 语境,或所有的参数均是实数值,它们作为实数被比较。 如果任何一个参数是字母大小写敏感的,参数作为大小写敏感的字符串进行比较。 在其它情况下,参数做为忽略大小写的字符中进行比较:

mysql> SELECT LEAST(2,0); -> 0 mysql> SELECT LEAST(34.0,3.0,5.0,767.0); -> 3.0 mysql> SELECT LEAST("B","A","C"); -> "A"

 
在早于 MySQL 3.22.5 的版本中,你可以使用 MIN() 代替 LEAST

GREATEST(X,Y,...) 返回最大(最大值)参数。参数使用与 LEAST 一致的规则进行比较:

mysql> SELECT GREATEST(2,0); -> 2 mysql> SELECT GREATEST(34.0,3.0,5.0,767.0); -> 767.0 mysql> SELECT GREATEST("B","A","C"); -> "C"

 
在早于 MySQL 3.22.5 的版本中,可以使用 MAX() 代替 GREATEST

DEGREES(X) 将参数 X 从弧度转换为角度,然后返回:

mysql> SELECT DEGREES(PI()); -> 180.000000

 
RADIANS(X) 将参数 X 从角度转换为弧度,然后返回:

mysql> SELECT RADIANS(90); -> 1.570796

 
TRUNCATE(X,D) 将数值 X 截到 D 个小数,然后返回。如果 D0,结果将不包含小数点和小数部分:

mysql> SELECT TRUNCATE(1.223,1); -> 1.2 mysql> SELECT TRUNCATE(1.999,1); -> 1.9 mysql> SELECT TRUNCATE(1.999,0); -> 1 mysql> SELECT TRUNCATE(-1.999,1); -> -1.9

 
从 MySQL 3.23.51 开始,所有数字被四舍五入到零。如果 D 是负数,那么数字的整个部分被对准零位输出:

mysql> SELECT TRUNCATE(122,-2); -> 100

 
注意, 十进值小数在中通常不以精确数字存储,而是双精度型的值,你可能会被下列结果所愚弄:

mysql> SELECT TRUNCATE(10.28*100,0); -> 1027

 
上面结果的发生是因为 10.28 实际上是以某些像 10.2799999999999999 的形式被存储的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-998556/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-998556/

你可能感兴趣的文章
「PLC」PLC基本编程
查看>>
MySQL修改时区的方法小结
查看>>
恶意代码代码特征提取
查看>>
CODE FESTIVAL 2017 qual C F
查看>>
【已解决】【Mac】 运行adb提示command not found,需要配置adb环境
查看>>
可视化对象(str/repr/bytes)
查看>>
LeetCode 120. 三角形最小路径和
查看>>
剑指offer-机器人的运动范围
查看>>
Web APi之过滤器创建过程原理解析【一】(十)
查看>>
scala(06)----(AKKA)
查看>>
iOS App 启动性能优化
查看>>
Asp.Net MVC3 简单入门详解过滤器Filter
查看>>
IntelliJ IDEA(一) :安装
查看>>
Java中String与BufferedReader、InputStream转换
查看>>
netty使用MessageToByteEncoder 自定义协议(四)
查看>>
MySQL 安装
查看>>
吴裕雄--天生自然 python数据分析:葡萄酒分析
查看>>
吴裕雄 Bootstrap 前端框架开发——简介
查看>>
判断一个对象是jQuery对象还是DOM对象
查看>>
设计简单的后台管理的数据排序
查看>>