与MSSQL对比学习MYSQL的心得(六)--函数(6)
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服务,即可生效。