龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > MySQL 技术 >

与MSSQL对比学习MYSQL的心得(六)--函数(6)

时间:2014-08-05 02:12来源:网络整理 作者:网络 点击:
分享到:
ENCODE(str,pswd_str)使用pswd_str作为密码,加密str。使用DECODE()解密结果,结果是一个和str长度相同的二进制字符串 SELECT ENCODE('nihao','123') 可以看到加密后的结果

ENCODE(str,pswd_str)使用pswd_str作为密码,加密str。使用DECODE()解密结果,结果是一个和str长度相同的二进制字符串

SELECT ENCODE('nihao','123')


可以看到加密后的结果为乱码

 4、解密函数DECODE(crypt_str,pswd_str)

 DECODE(crypt_str,pswd_str)使用pswd_str作为密码,解密加密字符串crypt_str,crypt_str是由ENCODE()返回的字符串

SELECT DECODE(ENCODE('nihao','123'),'123')


可以看到,解密出来的字符串

ENCODE()和DECODE互为反函数

其他函数

1、格式化函数FORMAT(x,n)

FORMAT(x,n)将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串的形式返回。

若n为0,则返回结果函数不含小数部分

SELECT FORMAT(12332.123465,4)


FORMAT(12332.123465,4)保留4位小数点值,并进行四舍五入,结果为12,332.1235

2、不同进制的数字转换的函数

CONV(N,from_base,to_base)函数进行不同进制数间的转换。

SELECT CONV('a',16,2)


 CONV('a',16,2)将十六进制的a转换为二进制表示的数值。

3、IP地址与数字相互转换的函数

INET_ATON(expr)给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数。

地址可以是4或8比特地址

INET_NTOA(expr)给定一个数字网络地址(4或8比特),返回作为字符串的该地址的点地址表示。

4、加锁函数和解锁函数

GET_LOCK(str,timeout)设法使用字符串str给定的名字得到一个锁,超时为timeout秒。

RELEASE_LOCK(str)解开被GET_LOCK()获取的,用字符串str所命名的锁。

IS_FREE_LOCK(str)检查名为str的锁是否可以使用

IS_USED_LOCK(str)检查名为str的锁是否正在被使用

5、重复执行指定操作的函数

BENCHMARK(count,expr)函数重复count次执行表达式expr。他可以用于计算MYSQL处理表达式的速度。

结果值通常为0(0只是表示处理过程很快,并不是没有花费时间)

另一个作用是他可以在MYSQL客户端内部报告语句执行的时间。

首先,使用PASSWORD函数加密密码

SELECT PASSWORD('nihao')


可以看到PASSWORD()函数执行花费的时间为0.00098秒

下面使用BENCHMARK函数重复执行PASSWORD操作500000次

SELECT BENCHMARK(500000,PASSWORD('nihao'))


由此可以看出,使用BENCHMARK执行500000次的时间为0.49690秒,明显比执行一次的时间延长了。

TIPS:BENCHMARK报告的时间是客户端经过的时间,而不是在服务器端的CPU时间,每次执行后报告的时间并不一定是相同的。

6、改变字符集的函数

CONVERT(...using...)带有USING的CONVERT()函数被用来在不同的字符集之间转化数据。

SELECT CHARSET('string'),CHARSET(CONVERT('string' USING latin1))


默认为utf8字符集,通过CONVERT()将字符串“string”的默认字符集改为latin1

 

7、改变数据类型的函数

CAST(x,AS type)和CONVERT(x,type)函数将一个类型的值转换为另一个类型的值,可转换的type有:

BINARY、CHAR(n)、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED

在SQLSERVER里也是使用这两个函数进行数据类型转换的~

SELECT CAST(100 AS CHAR(2)),CONVERT('2013-8-9 12:12:12',TIME)

可以看到, CAST(100 AS CHAR(2))将整数数据100转换为带有2个显示宽度的字符串类型,结果为10

CONVERT('2013-8-9 12:12:12',TIME)将DATETIME类型的值,转换为TIME类型值,结果为“12:12:12”

总结

这一节简单介绍了MYSQL里的一些函数,并且比较了与SQLSERVER的区别 


TIPS:

1、MYSQL中,日期时间以字符串形式存储在数据表中,因此可以使用字符串函数分别截取日期时间值的不同部分

2、修改默认的字符集,更改MYSQL默认的字符集,在Windows中,只需要修改my.ini,该文件在MYSQL安装目录下。

修改配置文件中的default-character-set和character-set-server参数值,将其改为想要的字符集名称,如:

gbk、gb2312、latin1等,修改完之后,重启MYSQL服务,即可生效。

精彩图集

赞助商链接