sql-基础-字符串函数

  字符串函数分为四类。

  基础,查询(位置,子字符串,长度),新增,修改。

  格式,填充,trim,大小写。

  转换,进制类,字符集类,其他数据类型。

  工具,生成,加密 & 解密,转义,其他。

1、基础

1.1   查询

1.1.1  位置

  分为两类,在单个字符串中寻找某个字符串的位置。在字符串集合中搜索某个字符串的位置。

  1.1.1.1    position(单个)

  格式: position(search_str in str)

  说明:搜索search_str在str中的位置。不存在时返回0,若search_str或str为null时返回null。

     参数:

     search_str关键词。

  str: 被搜索的字符串

  示例:

  position('a' in 'abc') // 返回1

  注意:起始位置为1,不是0. 当多次出现时,只返回第一次出现的位置

  类似的函数:instr(str, search_str)

  1.1.1.2   locate(单个)

  比position多一个参数,该参数指定搜索的起始位置。

  locate(‘a’, ‘abca’, 1); // 返回1,和position完全相同

  locate(‘a’, ‘abca’, 2); // 返回4。

  1.1.1.3   field & find_in_set(多个)

  格式:field(target, str1, str2,strN)   find_in_set(target,strList)

  说明:在str集合中查询target的位置。

  参数:

  str1, str2, strN:提供N个字符串,组成一个集合

  strList由1到N个字符串拼接而成,用逗号分隔。

  示例:

  field(‘a’,’a’,’b’,’c’)  // 返回1

  find_in_set(‘a’,’a,b,c’) // 与上面功能相同

  1.1.2  长度

  1.1.2.1  length

   length(‘ab’); // 返回2,计算字符串的长度。

  1.1.3  子串

   1.1.3.1  substring & substr & mid

  格式:substring(str, start, length)

  描述:截取子字符串。

  参数:

  start起始位置,负数时,从右往左。

  length:截取的长度,若未指定,默认到末尾。

  示例:

  substring(‘abc’,1); // 返回bc

  substring(‘abc’,-1); // 返回c

  类似的函数:mid(str, start, len)

  1.1.3.2   left & right

  left(str, length) // 返回str的前length个字符,当length为负数时,从末尾开始。

  right(str,length) // 从右到左。

 1.2  新增

   1.2.1  concat & concat_ws

  格式:concat(str1, str2...) concat_ws(separator, str1, str2...)

  描述:在上一个字符串的末尾添加下一个字符串。

  参数:

  Str: 1到N个子字符串。

  separator: 分隔符,若未指定,默认为逗号

  示例: 

  select concat(‘hello’, ‘ ’, ‘world’) // 返回hello world

  select ‘hello’ || ‘ ’ || world // 相同的效果

 1.3  修改

   1.3.1  insert

  格式:insert(str, start, length, substr)

  说明:在str的开始位置,结束位置之间,使用substr替换。

   1.3.2  replace

  格式:replace(str, old_str, new_str)

  描述:替换字符串。

  参数:

  old_str被替换的字符串。若不存在,则什么都不做。

  new_str: 用来替换的新字符串

  示例:

  select replace('aba', 'a', 'd'); // 返回dbd

  注意:不是光替换第一次,而是替换所有的字符串

2、格式

  2.1 去除

   2.1.1  trim & ltrim & rtrim

  格式:trim( [ [{LEADING | TRAILING | BOTH}] [removal_char] FROM ] target_string)

  描述:在开头,末尾删除字符串中的所有特定字符。当未指定特定字符时,默认为空格。

  参数:

  {LEADING | TRAILING | BOTH}指定删除位置,LEADING开头,TRAILING末尾,BOTH包含开头和末尾。默认值为both

  removal_char: 特定字符,默认情况下为空格。

  from target_string: 指定字符串。

  示例:

  trim(‘xxxWHISKEYxxx’); // 返回源字符串,位置参数为both,特定字符为空字符串。

  trim(' WHISKEY   '); // 返回WHISKEY,位置参数为BOTH,特定字符串为空字符串。

  trim(LEADING from ' WHISKEY   '); // 等价于ltrim

  trim(TRAILING from ' WHISKEY   '); // 等价于rtrim。

  trim(BOTH 'x' FROM 'xxxWHISKEYxxx'); // 返回WHISKEY,位置参数BOTH有没有都是一样的。

  类似的函数:

  ltrim(str);// 相当于位置参数为LEADING, 特殊字符为空格

  rtrim(str);// 相当于位置参数为TRAILING, 特殊字符为空格

 2.2  填充

 2.2.1   lpad

  格式:lpad(str, len, padStr)

  描述:在str的开头用padStr填充,直到str字符串的长度为len。

  参数:

  len填充完成之后的字符串长度,若小于原始长度,相当于截取。

  padStr填充的字符串

  示例:

  select lpad('ab', 5, 'b'); // 返回bbbab

  select lpad('ab', 1, 'b'); // 返回a

  类似的函数:

  select rpad('ab', 5, 'b'); // 返回abbbb

 2.3  大小写

  2.3.1  lower & upper

  返回字符串的大小写,不改变源字符串。

  select lower(‘AbC’); // 返回abc

  select upper(‘aBc’); // 返回ABC

3、转换

  3.1  字符集

   3.1.1    ascii & char

  ascii(‘A’); // 返回65, 字母的ASCII码

  char(num); // 字符集数字对应的字符,参数为65时返回A

 3.2  进制

  bin(str) // 将字符串转换为二进制

  oct(str) // 将字符串转换为八进制

  hex(str) // 将字符串转换为十六进制

  unhex(str) // 将十六进制转换为对应的字符串。

4、工具

  4.1  生成

  4.1.1  repeat

  select repeat(‘a’,3); // 返回aaa,str重复n次。

  4.1.2 reverse

  select reverse(‘ab’); //返回ba,原字符串倒序。

  4.1.3 space

  select space(n);  // 返回n个空格

  4.1.4  UUID

  select UUID(); // 返回唯一ID

  4.2  加密

   4.2.1 to_base64

  select to_base64(str);  // 返回用base64加密的字符串。

  4.3 转义

  4.3.1 quote

  quote("a'b'c") // 返回'a\'b\'c', 将str中的特殊字符进行转义。

 4.4 其他

   4.4.1 strcmp

  格式: strcmp(str1, str2)

  说明:str1和str2做比较,大于返回1,小于返回-1,等于返回0

  示例:

  select strcmp(‘a’,’b’); // 返回-1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章