⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysql 语言参考.txt

📁 大量Delphi开发资料
💻 TXT
📖 第 1 页 / 共 5 页
字号:
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) 
如果字符串 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++ 库,下面有一个示例,详细请查看 http://www.mysql.com/documentation/mysql++/mysql++-examples.html。 

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 REGEXP pat 
expr RLIKE pat 
依照模式 pat 对字符串表达式 expr 执行一个模式比较。模式可以是一个扩展的正则表达式。查看章节 G MySQL 正则表达式。如果表达式 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.8 MySQL 全文搜索。 
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) 的缩写。查看章节 6.3.5 Cast 函数。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 位)精度运算并返回结果!如果一个参数是一个无符号的整数,另一个参数也是一个整数,结果也将是一个无符号整数。查看章节 6.3.5 Cast 函数。 


+ 
加法: 
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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -