Mysql学习笔记(四)字符串函数

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

学习内容:

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

ASCii(str)

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

mysql>select ascii(‘2‘);
mysql>select ascii(‘dx‘);

ORD(str)函数

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

mysql> SELECT ORD(‘2‘);
        -> 50mysql>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);
        -> ‘1010‘
mysql> SELECT CONV("6E",18,8);
        -> ‘172‘

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

mysql> SELECT BIN(12);
        -> ‘1100‘
mysql> SELECT OCT(12);
        -> ‘14‘
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,‘1‘,‘0‘,‘‘,5);
        -> 10000
# 最左边第一位为 2 的 0 次幂

mysql> select EXPORT_SET(2,‘1‘,‘0‘,‘‘,5);
        -> 01000
# 最左边第一位为 2 的 0 次幂,第二位为 2 的 1 次幂        

mysql> select EXPORT_SET(4,‘1‘,‘0‘,‘‘,5);
        -> 00100
# 最左边第一位为 2 的 0 次幂,第二位为 2 的 1 次幂,第三位为 2 的 2 次幂  

mysql> select EXPORT_SET(15,‘1‘,‘0‘,‘‘,5);
        -> 11110
# 最左边第一位为 2 的 1 次幂,第四位为 2 的 3 次幂  

mysql> select EXPORT_SET(16,‘1‘,‘0‘,‘‘,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

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

时间: 2024-08-04 14:32:42

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

数据库学习笔记5---MySQL字符串函数、日期时间函数

一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左.取右 6.LENGTH   获取长度(字节为单位) 7.LTRIM/RTRIM/TRIM 去空格(左/右/自定义) 8.STRCMP  字符串比较 9.CONCAT  字符串拼接 10.SUBSTRING  字符串截取 1.CHAR_LENGTH:获取长度(字符为单位) CHAR_LENGTH(s

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

一:几种常用存储引擎汇总表 二:如何选择 ? MyISAM:默认的MySQL插件式存储引擎.如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性.并发性要求不是很高,那么选择这个存储引擎是非常适合的.MyISAM是在Web.数据仓储和其他应用环境下最常使用的存储引擎之一. ? InnoDB:用于事务处理应用程序,支持外键.如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包括很多的更新.删除操作,那么InnoDB存储引擎应

MySQL学习笔记四:字符集

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

MySQL学习笔记10(MySQL函数)

MySQL学习笔记10 MySQL函数 MySQL数据库中提供了很丰富的函数.MySQL函数包括数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数.加密函数.格式化函数等.通过这些函数,可以简化用户的操作.SELECT语句及其条件表达式都可以使用这些函数.同时,INSERT.UPDATE.DELECT语句及其条件表达式也可以使用这些函数. 1:数学函数 数学函数是M有SQL中常用的一类函数.主要用于处理数字,包括整型.浮点数等.数学函数包括绝对值函数.正弦函数.余弦函数.获取随机数

MySQL学习笔记—自定义函数

MySQL学习笔记-自定义函数 注释语法: MySQL服务器支持3种注释风格: 从'#'字符从行尾. 从'– '序列到行尾.请注意'– '(双破折号)注释风格要求第2个破折号后面至少跟一个空格符(例如空格.tab.换行符等等).该语法与标准SQL注释语法稍有不同. 从/序列到后面的/序列.结束序列不一定在同一行中,因此该语法允许注释跨越多行. 下面的例子显示了3种风格的注释: mysql> SELECT 1+1; # This comment continues to the end of li

MySQL学习笔记-自定义函数

MySQL学习笔记-自定义函数 1.自定义函数简介 自定义函数:用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同 自定义函数的两个必要条件:(1)参数  (2)返回值 自定义函数: 创建自定义函数 CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body 关于函数体: 1.函数体可以由合法的SQL语句构成: 2.函数体可以是

mysql学习笔记 第四天

mysql引擎: archive(档案)[数据插入以后不能被修改,只读] blackhole[这种写操作是删除数据,读操作是返回空白记录] CSV[在储存数据时以逗号作为数据项之间的分隔符] example[示例(存根)储存引擎] Falcon[用来进行处理事务的储存类型] federated[用来访问远程数据表的储存引擎] InnoDB[具备外键支持功能的事务处理引擎] memory[内存里的数据表] merge[用来管理多个MyISAM数据表构成的数据表集合(merg-myisam)] my

MySQL学习笔记之九 字符串模式匹配

我们在使用查询的时候,经常会碰到模糊条件查询,而模糊查询就涉及到了字符串模式匹配. 在这里,主要讲两个:标准的SQL模式匹配.扩展正则表达式模式匹配.     一.标准的SQL模式匹配 SQL的模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零个字符).在MySQL中,SQL的模式缺省是忽略大小写的.下面显示一些例子.注意在你 使用SQL模式时,你不能使用=或!=:而使用LIKE或NOT LIKE比较操作符. 为了找出包含正好5个字符的名字,

十四、Android学习笔记_Android回调函数触发的几种方式 广播 静态对象

一.通过广播方式: 1.比如登录.假如下面这个方法是外界调用的,那么怎样在LoginActivity里面执行登录操作,成功之后在回调listener接口呢?如果是平常的类,可以通过构造函数将监听类对象传入即可.但是在Activity中不能传递监听对象,所以考虑使用广播来实现. public void login(final LoginOnClickListener listener) { Intent intent = new Intent(context, LoginActivity.clas