zoukankan      html  css  js  c++  java
  • mysql之字符串操作

    写在前面

    上篇文章学习了mysql常用的日期操作的函数,这篇文章将学习mysql的字符串操作的函数。

    系列文章

    mysql之创建数据库,创建数据表

    mysql之select,insert,delete,update

    mysql之group by,order by

    mysql之count,max,min,sum,avg,celing,floor

    mysql之日期函数

    mysql实战

    1、ASCII(str)

    select ascii('a');

    select ascii('ab');

    select ascii('');

    select ascii(null);

    通过上面的例子,可以看出:返回字符串str的 最左面字符的ASCII代码值。如果str是空字符串, 返回0。如果strNULL,返回NULL

    2、ORD(str)

    如果字符串str最左面字符是一个多字节字符,通过以格式((first byte  ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]返 回字符的ASCII代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符。返回与ASCII()函 数返回的相同值

    select ord('a');

    注意:感觉功能上跟ascii函数差不多,很少用到这个函数。知道有就行了。

    3、CONV(N,from_base,to_base)

    在不同的数字基之间变换数字。返回数字N的字符串数字, 从from_base基变换为to_base基,如果任何参数是NULL, 返回NULL。参数N解 释为一个整数,但是可以指定为一个整数或一个字符串。最小基是2且最大的基 是36。如果to_base是 一个负数,N被认为是一个有符号数,否则,N被当作无符号数。 CONV以 64位点精度工作。

    select conv('a',16,2);

    select CONV("6E",18,8);

    select CONV(-17,10,-18);

    select CONV(10+"10"+'10'+0xa,10,10);

    4、BIN(N)

    返回二进制值N的一个字符串表示,在此N是一个长整数(BIGINT) 数字,这等价于CONV(N,10,2)。如果NNULL,返回NULL

    select BIN(2);

    5、OCT(N)

    返回八进制值N的一个字符串的表示,在此N是一个长整型数字,这等价于CONV(N,10,8)。 如果N是NULL,返回NULL

    select OCT(9);

    6、HEX(N)

    返回十六进制值N一个字符串的表示,在此N是一个长整型(BIGINT) 数字,这等价于CONV(N,10,16)。如果NNULL,返回NULL

    select HEX(255);

    7、CHAR(N,...)

    CHAR()将参数解释为整数并且返回 由这些整数的ASCII代码字符组成的一个字符串。NULL值 被跳过。

    select CHAR(77,121,83,81,'76');

    8、CONCAT(str1,str2,...) 

    返回来自于参数连结的字符串。如果任何参数是NULL, 返回NULL。可以有超过2个的参数。一个数字参数被变换为等价的字符串形 式

    select CONCAT('My', 'S', 'QL');

     9、LENGTH(str)OCTET_LENGTH(str) CHAR_LENGTH(str) CHARACTER_LENGTH(str)

    返回字符串str的长度。

    select LENGTH('mysql');

    10、LOCATE(substr,str)POSITION(substr IN str)

    返回子串substr在字符串str第一个出现的位置,如果substr不 是在str里面,返回0.

    select postion('mysql' in 'this is mysql');

    11、LOCATE(substr,str,pos) 

     返回子串substr在字符串str第一个出现的位置,从位置pos开 始。如果substr不是在str里 面,返回0

    select locate('mysql','this is mysql',4);

    12、INSTR(str,substr)

    返回子串substr在字符串str中的第一个出现的位置。这与有2个参数形式的LOCATE()相 同,除了参数被颠倒。

    select instr('this is mysql','mysql');

    13、LPAD(str,len,padstr)

    返回字符串str,左面用字符串padstr填补直到strlen个字符长

    select LPAD('hi',4,'??');

    14、RPAD(str,len,padstr)

    返回字符串str,右面用字符串padstr填补直到strlen个字符长。

    select RPAD('hi',5,'?');

    15、LEFT(str,len)

    返回字符串str的最左面len个字符。

    select LEFT('foobarbar', 5);

    16、RIGHT(str,len)

    返回字符串str的最右面len个字符

    select RIGHT('foobarbar', 4);

    17、SUBSTRING(str,pos,len)SUBSTRING(str FROM pos FOR len)MID(str,pos,len)

    从字符串str返回一个len个字符的子串,从位置pos开 始。使用FROM的变种形式是ANSI SQL92语法。

    select SUBSTRING('Quadratically',5,6);

     18、SUBSTRING_INDEX(str,delim,count)

    返回从字符串str的第count个出现分 隔符delim之前的子串。如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果count是负数,则反之。

    select SUBSTRING_INDEX('www.mysql.com', '.', 2);

    select SUBSTRING_INDEX('www.mysql.com', '.', -2);

    注意:其实也好理解,count为正数,取从左到右第count分隔符左边的字符串,如果为负数,则取从右到左第count个分隔符右边的字符串。

    19、LTRIM(str)

    返回删除了其前置空格字符的字符串str

    select ltrim('    wolfy');

    20、RTRIM(str)

    返回删除了字符串后面的空格字符的字符串str

    select rtrim('    wolfy    00   ');

    21、TRIM([[BOTH | LEADING |  TRAILING] [remstr] FROM] str)
    返回字符串str,其所有remstr前缀或后缀被删除了。如果没有修饰符BOTHLEADINGTRAILING给 出,BOTH被假定。如果remstr没 被指定,空格被删除。

    set @str='    wolfy    00   ';
    select trim(@str);

    set @str='xxxxxxwolfyxxxxxxxxxxxxx';
    select trim(leading 'x' from @str);

    set @str='xxxxxxwolfyxxxxxxxxxxxxx';
    select trim(both 'x' from @str);

    set @str='xxxxxxwolfyxxxxxxxxxxxxx';
    select trim(trailing 'x' from @str);

    22、SOUNDEX(str)

    返回str的一个同音字符串。听起来“大致相同”的2个 字符串应该有相同的同音字符串。一个“标准”的同音字符串长是4个字符,但是SOUNDEX()函 数返回一个任意长的字符串。你可以在结果上使用SUBSTRING()得到 一个“标准”的 同音串。所有非数字字母字符在给定的字符串中被忽略。所有在A-Z之外的字符国际字母被当作元音。

    select SOUNDEX('Hello');

    23、SPACE(N)

    返回由N个空格字符组成的一个字符串。

    select SPACE(6);-- '      '

    24、REPLACE(str,from_str,to_str)
    返回字符串str,其字符串from_str的所有出现由字符串to_str代 替。

    select replace('hello world','o','s');

    25、REPEAT(str,count)

    返回由重复countTimes次的字符串str组成的一个字符串。如果count  <= 0,返回一个空字符串。如果strcountNULL, 返回NULL

    select repeat('hello world ',3);

    26、REVERSE(str)

    反向输出字符串

    select reverse('hello world ');

    27、INSERT(str,pos,len,newstr)

    返回字符串str,在位置pos起始的子串且len个 字符长得子串由字符串newstr代替

    select insert('hello world ',6,1,' Hello ');

    28、ELT(N,str1,str2,str3,...)

    如果N= 1,返回str1,如 果N= 2, 返回str2,等等。如果N小 于1或大于参数个数,返回NULLELT()FIELD()反 运算。

    select elt(1,'hello', 'world ');

    29、FIELD(str,str1,str2,str3,...)  

    返回strstr1, str2str3, ...清 单的索引。如果str没找到,返回0FIELD()ELT()反运算。

    select field('hello', 'world',  'hello');

    30、FIND_IN_SET(str,strlist)

    如果字符串str在由N子串组成的表strlist之 中,返回一个1N的 值。一个字符串表是被“,”分隔的子串组成的一个字符串。如果第一个参数是 一个常数字符串并且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而使用位运算!如果str不是在strlist里 面或如果strlist是空字符串,返回0。如果任何一个参数是NULL, 返回NULL。如果第一个参数包含一个“,”,该函数将工作不正常。

    SELECT FIND_IN_SET('b','a,b,c,d');

    31、MAKE_SET(bits,str1,str2,...)  

    返回一个集合 (包含由“,”字符分隔的子串组成的一个 字符串),由相应的位在bits集合中的的字符串组成。str1对应于位0,str2对 应位1,等等。在str1, str2, ...中 的NULL串不添加到结果中。

    SELECT make_set(2,'b','a,b,c,d');

    32、EXPORT_SET(bits,on,off,[separator,[number_of_bits]])

    返回一个字符串,在这里对于在“bits”中设定每一位,你得到一个“on”字符串,并且对于每个复位(reset)的位,你得到一个 “off”字符串。每个字符串用“separator”分隔(缺省“,”),并且只有“bits”的“number_of_bits”  (缺省64)位被使用。

    select EXPORT_SET(1,'Y','N',',',4)

    33、LCASE(str)LOWER(str)

    返回字符串str,根据当前字符集映射(缺省是ISO- 8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的。

    select lower('HELLO WORLD')

    34、UCASE(str)UPPER(str)

    返回字符串str,根据当前字符集映射(缺省是ISO- 8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的。与lower函数相反,转换成大写。不再赘述。

    35、LOAD_FILE(file_name)

    读入文件并且作为一个字符串返回文件内容。文件必须在服务器上,你必须指定到文件的完整路径名,而且你必须有file权 限。文件必须所有内容都是可读的并且小于max_allowed_packet。 如果文件不存在或由于上面原因之一不能被读出,函数返回NULL

    (很少用到,感兴趣的可以另外查找)。

    总结

    在整理字符串的函数时,也很以外,竟然有这么多函数。平时用到的就那么几个,今天算是长见识了。

    参考

    http://www.cnblogs.com/showker/archive/2010/03/15/1685874.html

  • 相关阅读:
    JDBC 查询的三大参数 setFetchSize prepareStatement(String sql, int resultSetType, int resultSetConcur)
    有空必看
    SpringMVC 利用AbstractRoutingDataSource实现动态数据源切换
    FusionCharts JavaScript API Column 3D Chart
    FusionCharts JavaScript API
    FusionCharts JavaScript API
    Extjs 继承Ext.Component自定义组件
    eclipse 彻底修改复制后的项目名称
    spring 转换器和格式化
    Eclipse快速生成一个JavaBean类的方法
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/4605379.html
Copyright © 2011-2022 走看看