PS:终于看完了字符串函数,心都快碎了...涉及的函数真是太多了...感觉这里的字符串函数和JAVA里的基本都差不多了...基本上算是掌握了,但是想全记住那是不太可能的。。。    

学习内容:

字符串函数的掌握和应用..

ASCii(str)

返回字符串的最左边的ascii码值..如果str为NULL,那么返回NULL...如果字符串为0,那么返回也为0...

mysql>select ascii('');
mysql>select ascii('dx');

ORD(str)函数

如果字符串最左边的字符为多字节字符,那么返回的函数值按照这个公式进行计算...:((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]。如果最左边的字符不是一个多字节字符,返回值与 ASCII() 函数相同:

mysql> SELECT ORD('');
-> 50
mysql>SELECT ORD('我');
->52946

那么何为多字节的字符呢?最简单的例子就属于汉字了...比如说一个字符串为“我hello”...那么ORD函数会将第一个多字节字符拆分成两个16进制表示的字节。。"我"字可以被拆分成两个字符,并且每个字符使用16进制数字开进行表示为CE D2,那么返回的值就是(12*16+14)*256+(13*16+2)=52946..

CONV(N,from_base,to_base)函数

将一个数字N,从from_base转换为to_base,返回值为字符串..

mysql> SELECT CONV("a",16,2);
-> ''
mysql> SELECT CONV("6E",18,8);
-> ''

BIN(N),OCT(N),HEX(N_or_S)函数..其实就是进制转换...估计大家也不陌生

mysql> SELECT BIN(12);
-> ''
mysql> SELECT OCT(12);
-> ''
mysql> SELECT HEX(255);
-> 'FF'
mysql> SELECT HEX("abc");
-> 616263

CONCAT(str,str1,str2......)字符串连接函数,如果一个值为NULL,那么返回值也为NULL。。

CONCAT_WS(separator,str,str1...)属于上述函数的一种特殊的形式..就是在连接的过程中,在每个字符串之间插入一个标示符..

mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> SELECT CONCAT_WS(",","First name","Second name","Last Name");
-> 'First name,Second name,Last Name'

Length(str),OCTET_Length(str),CHAR_Length(str),CHARACTER_Length(str)...四个函数等价,返回字符串的字节长度..字符串还有比特长度,比特长度就是这个函数所得到的具体值*8...

mysql> SELECT LENGTH('text');
-> 4

Locate(substr,str),Position(substr In str),返回字串substr在str中第一次出现的位置...Instr(str,substr)变量是反的,不过作用是相同的。。

Locate(substr,str,pos)指定pos位置,查找pos位置以后字串在str第一次出现的位置..

注意:这些函数对于多字节的字符是安全的..mysql的字符串第一个位置是从1开始的..而不是从0开始的..

mysql> SELECT LOCATE('bar', 'foobarbar');
-> 4
mysql> SELECT LOCATE('bar', 'foobarbar',5);
-> 7
mysql> SELECT INSTR('xbar', 'foobar');
-> 0

Substring(str,pos,len),Substring(str from pos for len),mid(str,pos,len)..返回指定pos位置的len长度的字符子串...

Substring(str,pos),Substring(str from pos)。。返回一个从pos位置起的一个字符子串...

mysql> SELECT SUBSTRING('Quadratically',5,6);
-> 'ratica'
mysql> SELECT SUBSTRING('Quadratically',5);
-> 'ratically'

Replace(str,from_str,to_str)字符串frmo_str部分将被to_str所替代..

Reverse(str)字符串反转...

Insert(str,pos,len,newstr)...在pos位置处后面的len长度的字符串将被newstr替代..这些函数对于多字节字符是安全的...

mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
mysql> SELECT REVERSE('abc');
-> 'cba'
mysql> SELECT INSERT('Quadratic', 3, 4, 'What');
-> 'QuWhattic'

Export_set(bits,on,off,[sepatator,[number_of_bits]])不太确定到底能不能用得上,感觉上还是比较重要的...

返回一个字符串,对于在 'bits' 中的每个比特字位,你将得到一个 'on' 字符,而如果比特字位是一个清零比特位(reset bit)你将得到一个 'off' 字符串。每个字符串均被“分隔符”(缺省为“,”)分隔,并且只有 'number_of_bits'(缺省为 64) 个 'bits' 被使用:

mysql> SELECT EXPORT_SET(5,'Y','N',',',4)
-> Y,N,Y,N 一些例子,方便大家去理解... mysql> select EXPORT_SET(1,'','','',5);
-> 10000
# 最左边第一位为 2 的 0 次幂 mysql> select EXPORT_SET(2,'','','',5);
-> 01000
# 最左边第一位为 2 的 0 次幂,第二位为 2 的 1 次幂 mysql> select EXPORT_SET(4,'','','',5);
-> 00100
# 最左边第一位为 2 的 0 次幂,第二位为 2 的 1 次幂,第三位为 2 的 2 次幂 mysql> select EXPORT_SET(15,'','','',5);
-> 11110
# 最左边第一位为 2 的 1 次幂,第四位为 2 的 3 次幂 mysql> select EXPORT_SET(16,'','','',5);
-> 00001
# 最左边第一位为 2 的 1 次幂,第五位为 2 的 4 次幂

Lcase(str)<==>Lower(str),Ucase(str)<==>Upper(str)字符串大小写转换..

Load_file("路径名称")。。。读入文件,将文件中的内容更新到数据库当中...注意:这个文件必须在服务器上,还要有完整的路径名称..如果文件不存在,返回NULL...

mysql> UPDATE tbl_name
SET blob_column=LOAD_FILE("/tmp/picture")
WHERE id=1;

expr REGEXP pat

expr Like pat

依照模式 pat 对字符串表达式 expr 执行一个模式比较。模式可以是一个扩展的正则表达式。Returns 如果表达式 expr 匹配 pat,返回 1,否则返回 0RLIKEREGEXP 的同义词,它提供了与 mSQL 的兼容。注意:MySQL 在字符串中使用的是 C 的转义句法(例如“\n”),所以在 REGEXP 字符串中使用的任何一个“\”必须被双写。在 MySQL 3.23.4 中,REGEXP 对于正常的(不是二进制)字符串是忽略大小写的:

mysql> SELECT 'Monty!' REGEXP 'm%y%%';
-> 0
mysql> SELECT 'Monty!' REGEXP '.*';
-> 1
mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
-> 1
mysql> SELECT "a" REGEXP "A", "a" REGEXP BINARY "A";
-> 1 0
mysql> SELECT "a" REGEXP "^[a-d]";
-> 1 当决定一个字符的类型时,REGEXP 和 RLIKE 使用当前使用的字符集(缺省为 ISO-8859-1 Latin1)。

strcmp(str,str1)字符串比较函数...

mysql> SELECT STRCMP('text', 'text2');
-> -1
mysql> SELECT STRCMP('text2', 'text');
-> 1
mysql> SELECT STRCMP('text', 'text');
-> 0

Binary 正常情况下,字符串比较的时候是忽略大小写进行比较的..如果想强制要求大小写...那么使用Binary进行强制要求...

mysql> SELECT "a" = "A";
-> 1
mysql> SELECT BINARY "a" = "A";
-> 0

还有很多的字符串函数并没有提到,感觉用不太上,例举了一些比较重要的字符串函数...希望对自己以后有帮助。。。

Mysql学习笔记(四)字符串函数的更多相关文章

  1. MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

  2. [学习笔记] Oracle字符串函数、日期函数、数值函数、转换函数、聚合函数

    函数 单行函数:对一行数据进行操作的函数,如字符串函数.数值函数.转换函数.日期函数等. 聚合函数:同时对多行数据进行操作,如求和函数等. 字符串函数 函数 说明 ASCII(X) 求字符X的ASCI ...

  3. Python学习笔记(四)Python函数的参数

    Python的函数除了正常使用的必选参数外,还可以使用默认参数.可变参数和关键字参数. 默认参数 基本使用 默认参数就是可以给特定的参数设置一个默认值,调用函数时,有默认值得参数可以不进行赋值,如: ...

  4. MySQL学习笔记(四)—存储过程

    一.概述      存储过程是数据库定义的一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程可以避免开发人员重复的编写相同的SQL语句,而且存储过程是在MySq ...

  5. MySQL学习笔记:字符串前后补全0

    遇到一个需求:不足6位的需要自动补全6位,使用函数LPAD()和RPAD()补全. LPAD(str, len, padstr) 用字符串padstr对str进行左边填充补全直至它的长度达到len个字 ...

  6. mysql学习笔记—常用sql函数

    SQL 拥有很多可用于计数和计算的内建函数. SQL Aggregate 函数 SQL Aggregate 函数计算从列中取得的值,返回一个单一的值. 有用的 Aggregate 函数: AVG() ...

  7. MySQL学习笔记四:字符集

    1.字符集就是字符和其编码的集合,查看数据库支持的字符集 show character set 2.查看服务端启动时默认的字符集 mysql> show variables like 'char ...

  8. MySQL学习笔记(四):存储引擎的选择

    一:几种常用存储引擎汇总表 二:如何选择 一句话:除非需要InnoDB 不具备的特性,并且没有其他办法替代,否则都应该优先考虑InnoDB:或者,不需要InnoDB的特性,并且其他的引擎更加合适当前情 ...

  9. mysql学习笔记四 —— AB复制

    要点:ab复制 mysql集群架构流程: ABB(主从复制)-->MHA(实现mysql高可用.读写分离.脚本控制vip飘逸)-->haproxy(对slave集群实现分发,负载均衡)-- ...

  10. scala 学习笔记四 匿名函数

    1.介绍 Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体. 使用匿名函数后,我们的代码变得更简洁了. 下面的表达式就定义了一个接受一个Int类型输入参数的匿名函数: var ...

随机推荐

  1. SQL Server如何提高数据库备份的速度

    对于一个数据库完整备份来说,备份的速度很大程度上取决于下面两个因素:读磁盘数据.日志文件的吞吐量,写磁盘数据文件的吞吐量. 下图是备份过程中磁盘的变化情况: 读吞吐量 读吞吐量的大小取决于磁盘读取数据 ...

  2. IntelliJ IDEA 2016.2.4 最新版激活方法

    新版激活方法: 1.在线激活 2016年7月14日 更新: 该域名已无法激活,参见2016.2 的搭建授权服务器激活, 菜单help >>>> Register 选择Licen ...

  3. Android 图片的裁剪与相机调用

    有时候我们需要的图片并不适合我们想要的大小, 那么我们就可以用到系统自带的图片裁剪功能, 把规定范围的图像给剪出来. 贴上部分代码: //调用图库 Intent intent = new Intent ...

  4. BootStrap安装

    1. 安装Node.js    http://nodejs.org/download/ 2. 加速NPM安装    npm install -g cnpm --registry=http://r.cn ...

  5. Oracle中group by用法

    Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总 ...

  6. Moto G 通话没声音

    入手了摩托罗拉被 Google 收购后推出的第二款手机 Moto G (第一款是 Moto X) 后发现有个问题,有时候会莫名其妙地通话没声音,你听不到对方的,对方也听不到你的,从网上的搜索结果来看, ...

  7. 针对 SQL Server 2008 在Windows Server 2008上的访问配置 Windows 防火墙

    现在Windows Server 2008 服务器用的越来越多,2008的防火墙比2003的有了很大的增强,安全性有了更大的提高. 甚至80端口的出站默认都是被关闭的.所以如果在2008Server上 ...

  8. 解决Spring+Quartz无法自动注入bean问题

    问题 我们有时需要执行一些定时任务(如数据批处理),比较常用的技术框架有Spring + Quartz中.无奈此方式有个问题:Spring Bean无法自动注入. 环境:Spring3.2.2 + Q ...

  9. WinStore控件之Button、HyperlinkButton、RadioButton、CheckBox、progressBar、ScrollViewer、Slider

    1.Button protected override void OnNavigatedTo(NavigationEventArgs e) { /* * Button - 按钮控件,其全部功能是通过其 ...

  10. UNIX环境高级编程笔记之进程控制

    本章重点介绍了进程控制的几个函数:fork.exec族._exit.wait和waitpid等,主要需要掌握的是父进程和子进程之间的运行机制,怎么处理进程的正常和异常终止.以及怎么让进程执行不同的程序 ...