php开源嘛
首页 | English | MySql数据库 | Php编程 | 建站杂烩 | 系统服务器 | 资源共享 | 专题 | 才桀网 | 支持论坛
  当前位置:主页>MySql数据库>文章内容
用于SELECT和WHERE子句的SQL函数
来源:网络 作者:本站整理 发布时间:2007-06-18  




CONVERT(expression,type)

type 可以是下面的任一个:

* BINARY
* CHAR (4.0.6 中新加入)
* DATE
* DATETIME
* SIGNED {INTEGER}
* TIME
* UNSIGNED {INTEGER}

CAST() 是 ANSI SQL99 的句法,CONVERT() 是 ODBC 的句法。

CAST 函数主要用于以特殊的 CREATE ... SELECT 形式建立一个列时:

CREATE TABLE new_table SELECT CAST('2000-01-01' AS DATE);

CAST(string AS BINARY 与 BINARY string 是相同的。 CAST(expr AS CHAR 表示一个使用当前默认字符集的字符串。

为了将一个字符串转换成一个数字值,通常不需要做任何事情;只要将字符串值当做一个数字即可:

mysql> SELECT 1+'1';
-> 2

如果在一个字符串语境中使用一个数字,该数字会被自动地转换为一个 BINARY 字符串。

mysql> SELECT CONCAT("hello you ",2);
-> "hello you 2"

MySQL 支持两方是有符号的和无符号的 64 位值的算术运算。如果你使用一个数字操作符(比如 +),并且其中的一个操作数是 unsigned integer,那么结果将是无符号的。为了不考虑这些问题,你可以使用 SIGNED 和 UNSIGNED CAST 操作符来,它会分别地强制运算到一个有符号的或一个无符号的 64 位整数。

mysql> SELECT CAST(1-2 AS UNSIGNED)
-> 18446744073709551615
mysql> SELECT CAST(CAST(1-2 AS UNSIGNED) AS SIGNED);
-> -1

注意,如果任一个操作数是一个浮点值(在这种语境下,DECIMAL() 被当作是一个浮点数值),结果也将是一个浮点数值,并且结果不受上面的规则影响。

mysql> SELECT CAST(1 AS UNSIGNED) -2.0
-> -1.0

如果在一个算术运算中使用一个字符串,它将被转换为一个浮点数字。

函数 CAST() 和 CONVERT() 在 MySQL 4.0.2 中被加入。

为了完全支持 BIGINT,在 MySQL 4.0 中对无符号值的处理发生了改变。如果希望你的代码在 MySQL 4.0 和 3.23 中均能够正常运行(在这种情况下,你或许不能够使用 CAST 函数),当进行两个无符号整数列的减法时,你可以使用下面的技巧得到一个有符号的结果:

SELECT (unsigned_column_1+0.0)-(unsigned_column_2+0.0);

这个做法是在进行减法之前,先将无符号列转换为一个浮点数。

如果你将旧的 MySQL 应用程序移植到 MySQL 4.0 时,在 UNSIGNED 列上出现了问题,你可以在启动 mysqld 时使用 --sql-mode=NO_UNSIGNED_SUBTRACTION 选项。注意,只要你使用了这个选项,你将不能直接地使用 UNSIGNED BIGINT 列类型。
6.3.6 其它函数
6.3.6.1 位函数

MySQL 使用 BIGINT (64 位) 算法进行位运算,因而这些操作符有一个 64 位的最大范围。

|
位或

mysql> SELECT 29 | 15;
-> 31

返回值是一个 64 位的无符号整数。

&
位与

mysql> SELECT 29 & 15;
-> 13

返回值是一个 64 位的无符号整数。

^
位异或

mysql> SELECT 1 ^ 1;
-> 0
mysql> SELECT 1 ^ 0;
-> 1
mysql> SELECT 11 ^ 3;
-> 8

返回值是一个 64 位的无符号整数。 XOR 在 MySQL 4.0.2 中被加入。

<<
左移一个长长的数字(BIGINT):

mysql> SELECT 1 << 2;
-> 4

返回值是一个 64 位的无符号整数。

>>
右移一个长长的数字(BIGINT):

mysql> SELECT 4 >> 2;
-> 1

返回值是一个 64 位的无符号整数。

~
置反所有位:

mysql> SELECT 5 & ~1;
-> 4

返回值是一个 64 位的无符号整数。

BIT_COUNT(N)
返回在参数 N 中嵌入的比特位数量:

mysql> SELECT BIT_COUNT(29);
-> 4

6.3.6.2 辅助功能函数

DATABASE()
返回当前数据库名:

mysql> SELECT DATABASE();
-> 'test'

如果没有当前数据库,DATABASE() 返回一个空字符串。
USER()
SYSTEM_USER()
SESSION_USER()
返回当前 MySQL 用户名:

mysql> SELECT USER();
-> 'davida@localhost'

在 MySQL 3.22.11 或更新的版本中,返回值包含用户名和客户机的主机名。你可以象下面所示的仅取出用户名部分(无论值是否包含一个主机名部分,它均能正常工作):

mysql> SELECT SUBSTRING_INDEX(USER(),"@",1);
-> 'davida'

CURRENT_USER()
返回当前会话被验证匹配的用户名:

mysql> SELECT USER();
-> 'davida@localhost'
mysql> SELECT * FROM mysql.user;
-> ERROR 1044: Access denied for user: '@localhost' to database 'mysql'
mysql> SELECT CURRENT_USER();
-> '@localhost'

PASSWORD(str)
OLD_PASSWORD(str)
从纯文本口令 str 计算一个口令字符串。这个函数用于对存储到授权表 user 的Password 列中的 MySQL 口令进行加密。

mysql> SELECT PASSWORD('badpwd');
-> '7f84554057dd964b'

PASSWORD() 加密是不可逆的。 PASSWORD() 不以与 Unix 口令加密相同的方式进行口令加密。参见 ENCRYPT()。 注意, PASSWORD() 函数是用于在 MySQL 服务中验证系统的,你不应该 在你的应用程序中使用它。你可以使用 MD5() 或 SHA1() 代替使用它。同样查看 RFC-2195 可获得有关应用程序的口令处理与安全验证的更多信息。
ENCRYPT(str[,salt])
Encrypt使用 Unix crypt() 系统调用加密 str 。参数 salt 应该是一个有两个字符的字符串,(在 MySQL 3.22.16 中,salt 可以超过两个字符。):

mysql> SELECT ENCRYPT("hello");
-> 'VxuFAJXVARROc'

如果 crypt() 在你的系统上不可用,ENCRYPT() 总是返回 NULL。 ENCRYPT() 只保留 str 中前 8 个字符,而忽略其它所有的,至少在某些系统上是这样的。这取决于底层 crypt() 系统调用的行为。

ENCODE(str,pass_str)
使用 pass_str 做为密钥加密 str。使用 DECODE() 解密结果。结果是一个与 string 一样长的二进制字符。如果希望将它保存到一个列中,请使用 BLOB 列类型。

DECODE(crypt_str,pass_str)
使用 pass_str 作为密钥解密加密后的字符串 crypt_str。crypt_str 应该是一个由 ENCODE() 返回的字符串。

MD5(string)
计算一个字符串的 MD5 128 位校验和。值作为一个 32 位的十六进制数字返回,例如,被用于一个哈希(hash)键:

mysql> SELECT MD5("testing");
-> 'ae2b1fca515949e5d54fb22b8ed95575'

这是 "RSA 数据安全公司的 MD5 消息-摘要算法"。

SHA1(string)
SHA(string)
计算一个字符串的 SHA1 160 位校验和(在 RFC 3174 (Secure Hash Algorithm) 中被描述)。返回值是一个 40 位的十六进制数字,或在输入参数为 NULL 的情况下,返回值为 NULL。一个使用这个函数的可能就是用于一个哈希键。你也可以使用它作为存储密码时的密码安全函数。
(阅读次数:
共12页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 10 [11] [12] 下一页
上一篇:Linux/Unix下ODBC的安装、配置与编程   下一篇:怎么备份MySQL数据库
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·MySQL索引分析和优化
·MySQL数据库下.frm .MYD .MYI损
·怎么删除MySQL数据库中的重复数
·MySQL数据导入与导出
·MySQL数据库中SQL查询语句精华
·如何优化MySQL数据库性能
·MySQL查询优化之查询优化器
·怎么备份MySQL数据库
·如何导入导出*.sql文件到MySQL数
·MySQL数据导入导出方法与工具介
·MySQL索引分析和优化加速网站访
·SQL Server执行SQL语句时内存占
  相关文章
·怎么备份MySQL数据库
·MySQL索引分析和优化
·小技巧:怎样在Mysql中直接储存
·MySQL数据导入与导出
·各种MySQL客户环境变量程序概述
·mysql常用经典操作
·MySQL优化简明指南
·MySQL高级特性之一事务处理
·MySQL创建数据库和数据库表
·MySQL数据库学习笔记
·Mysql日期和时间函数不求人
·MySQL ODBC进行MySQL和SQL Serve

关于我们 | 本站声明 | 友情连接 | 诚邀加盟 | 网站地图
版权Power by DedeCms   技术支持QQ =>> 罗江游鱼   Jacking  后台登陆
Copyright @ 2007 公司地址:柳州市东环路268号 邮编:545006 电话:15920389818 桂ICP备07006725号