MySQL函数学习(一)—–字符串函数

注:笔记旨在记录

一、MySQL 字符串函数

\ 函 数 名 称 作 用 完 成 1 LENGTH

计算字符串长度 勾 2 CONCAT

字符串拼接,返回结果为连接参数产生的字符串 勾 3 INSERT

将原字符串的第pos-pos+len位替换为newstr 勾 4 LOWER

将字符串中的字母转换为小写 勾 4 UPPER

将字符串中的字母转换为大写 勾 5 LEFT

从左侧字截取符串,返回字符串左边的若干个字符 勾 5 RIGHT

从右侧字截取符串,返回字符串右边的若干个字符 勾 6 TRIM

删除字符串左右两侧的空格 勾 7 REPLACE

字符串替换函数,返回替换后的新字符串 勾 8 SUBSTRING

截取字符串,返回从指定位置开始的指定长度的字符换 勾 9 REVERSE

字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串 勾

1. LENGTH(str) — 计算长度

1.1. 函数:

  • CHAR_LENGTH(str)、CHARACTER_LENGTH(str) : 计算 字符 长度
  • LENGTH(str)、OCTET_LENGTH(str) : 计算 字节 长度
  • BIT_LENGTH(str) : 计算
  • UNCOMPRESSED_LENGTH(str) :

注:以上函数唯一参数都为 字段名字符串str

1.2. sql示例:

SELECT name,
    CHAR_LENGTH(name) as "CHAR_LENGTH(name) ",CHARACTER_LENGTH(name)  as "CHARACTER_LENGTH(name) ",
    LENGTH(name) as "LENGTH(name)",OCTET_LENGTH(name) as "OCTET_LENGTH(name)",
    BIT_LENGTH(name) as "BIT_LENGTH(name)",UNCOMPRESSED_LENGTH(name)
FROM atctq_book;

MySQL函数学习(一)-----字符串函数

注:在第一行中,”三体第二部 “中一个汉字占三个字节,表一个字符,空格或数字 字母也算一个字符,所以字符长度为6;
但空格或数字字母只占一个字节,所以字节长度为16(15 + 1);
位数没什么好说的,这里采用的是utf8,乘8;

2. CONCAT(str1,str2,…) — 拼接字符串

2.1. 函数:

  • CONCAT(str1,str2,...) : 多字符串拼接,若某一字段为null,则结果为null
  • CONCAT_WS(separator,str1,str2,...) : 多字符串拼接,并指定分隔符separator,若某一字段为null,结果不为null
  • GROUP_CONCAT(expr) : 将某字段的所有值拼接,可排序,可指定分隔符,若某一字段为null,结果不为null

注:推荐用concat_ws代替concat,避免因值为空导致的结果为null。

2.2. sql示例:

SELECT name,auth,concat(name,"(",auth,")"),CONCAT_WS(",",id,code,name,auth)  FROM atctq_book;

MySQL函数学习(一)-----字符串函数
select type_id,GROUP_CONCAT(name),GROUP_CONCAT(name order by code separator '_'),
         GROUP_CONCAT(concat(code,"_",name) order by code)
from atctq_book group by type_id;

MySQL函数学习(一)-----字符串函数
  • GROUP_CONCAT 要搭配GROUP BY来使用,将某字段的所有值拼接一起, 可排序,可使用 separator指定分隔符。 与concat_ws一样,若某字段为null,最终结果只会忽略该字段,不会为null。

3. INSERT(str,pos,len,newstr) — 插入替换字符串

3.1. 函数:

  • INSERT(str,pos,len,newstr): 将原字符串的第pos-pos+len位替换为newstr

注: str表示处理的初始字符串,pos表示从str的第几位开始插入,len表示插入的长度,newstr表示插入的字符串。

3.1. sql示例:

   SELECT code,name,
          INSERT(name,-1,2,"No.2"),
          INSERT(name,4,1,"2"),
          INSERT(name,3,2,"No.2"),
          INSERT(name,3,20,"No.2"),
          LAST_INSERT_ID()
   FROM atctq_book;

MySQL函数学习(一)-----字符串函数

注:当pos超过str长度时,会直接返回str作为结果。
当len超过str剩余长度(pos位往后)时,会将pos位往后的所有替换为newstr
LAST_INSERT_ID(): 获取最后插入的ID值

4. LOWER、UPPER — 字符串大小转换

4.1. 函数:

  • LOWER(str): 将字符串全部转为小写
  • UPPER(str): 将字符串全部转为大写

4.2. sql示例:

SELECT code,LOWER(code), id,UPPER(id) FROM atctq_book ;

MySQL函数学习(一)-----字符串函数

5. LEFT、RIGHT — 取字符串

5.1. 函数:

  • LEFT(str,len): 取字符串从左往右的若干各字符
  • RIGHT(str,len): 取字符串从右往左的若干各字符

5.2. sql示例:

SELECT code,name,LEFT(name,2),RIGHT(name,3) FROM atctq_book;

MySQL函数学习(一)-----字符串函数

6. TRIM(str) — 删除空格

6.1. 函数:

  • TRIM(BOTH FROM str) 等同于 TRIM(str)::删除左右俩侧空格
  • TRIM(LEADING FROM str) 等同于 LTRIM(str): 删除左侧空格
  • TRIM(TRAILING FROM str) 等同于 RTRIM(str): 删除右侧空格

6.2. sql示例:

SELECT code,name,auth,TRIM(auth),TRIM(BOTH FROM auth),
      LTRIM(auth),TRIM(LEADING FROM auth),
      RTRIM(auth),TRIM(TRAILING FROM auth)
FROM atctq_book WHERE type_id = "0001";

MySQL函数学习(一)-----字符串函数

7. REPLACE — 替换字符串

7.1. 函数:

  • REPLACE(str,from_str,to_str): 将str字符串中的from_str字符串替换为to_str

7.2. sql示例:

SELECT res,length(res) as "res长度",replace(res,'1',"") as "除去1后res",
        length(replace(res,'1',"")) as "res除去1后长度",
        length(res)-length(replace(res,'1',"")) as "res中1个数"
FROM atctq_book where res is not null and res <> "";

MySQL函数学习(一)-----字符串函数

注: from_str和to_str不能为null,否则直接返回结果null。
与INSERT的区别:INSERT是从第n位到m位插入字符串,而REPLACE是把原字符串中所有from_str替换为to_str

8. SUBSTRING — 取子字符串

8.1. 函数:

  • SUBSTRING(str,pos)等同于 SUBSTRING(str from pos): 取str第pos个字符后的字符串
  • SUBSTRING(str,pos,len)等同于 SUBSTRING(str from pos for len): 取str第pos个字符后长度为len的字符串
  • SUBSTRING_INDEX(str,delim,count): delim为分隔符,取str第count个分隔符前字符串

8.2. sql示例:

SELECT code,name,SUBSTRING(name,3),SUBSTRING(name from 3),
       SUBSTRING(name,4,5),SUBSTRING(name from 4 for 1),
       SUBSTRING(name,-2),SUBSTRING(name,-4,2),
FROM atctq_book WHERE type_id = "0001";

MySQL函数学习(一)-----字符串函数

注: pos为正数时表示从第pos个字符开始取
pos为负数时表示从倒数第pos个字符开始取

SELECT u.tt1,SUBSTRING_INDEX(u.tt1,".",1), SUBSTRING_INDEX(u.tt1,".",2),
       SUBSTRING_INDEX(u.tt1,".",3), SUBSTRING_INDEX(u.tt1,".",4)
from (SELECT "www.this.is.test.cn " as tt1) u

MySQL函数学习(一)-----字符串函数

注: cout为正数时表示从左往右开始取,cout为负数时表示从右往左开始取,cout大于分隔符数时,返回原字符串

9. REVERSE — 反转字符串

9.1. 函数:

  • REVERSE(str):反转字符串

9.2. sql示例:

SELECT id,REVERSE(id),name,REVERSE(name) FROM atctq_book;

MySQL函数学习(一)-----字符串函数

Original: https://www.cnblogs.com/hmpn/p/15837028.html
Author: hmpn
Title: MySQL函数学习(一)—–字符串函数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621026/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球