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)

大家都在看

  • mysql常用语句 3

    1.找出每个部门平均薪水的薪资等级,from后面嵌套子查询第一步是找出每个部门的平均工资。 [En] The first step is to find out the avera…

    数据库 2023年5月24日
    067
  • 使用postman Mock后端响应

    使用postman Mock后端响应 接口文档开发与评审后,前后端各自依照标准进行开发,此时前端人员有以下选择: 使用工具自己mock构造后端数据验证已开发页面 在项目中自己编写添…

    数据库 2023年6月6日
    092
  • Spring(一)-初识 + DI+scope

    1、获取bean实例的三种方式 UTF-8 4.3.18.RELEASE 1.16.18 4.11 org.springframework spring-beans ${sprin…

    数据库 2023年6月16日
    074
  • 近年来我带队开发出的一坨屎山

    有人说: 烂代码跟一坨屎一样,很多时候就是和一坨屎共处千万别深挖,说不定把哪里挖塌了把你埋了,扔一坨代码到屎山上,达到自己目的,能跑就行了,你还要搞清楚山上的屎哪一坨是谁拉的,拉的…

    数据库 2023年6月9日
    089
  • tomcat

    tomcat 一.简介 二.部署tomcat 一.简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场…

    数据库 2023年6月14日
    079
  • NO.1 通讯录管理系统+源代码(C++)

    功能描述:显示简单的菜单,供用户选择操作 实现步骤:直接cout输出 功能描述:根据用户不同的操作代码选择,进入不同的功能,我们使用switch分支结构进行搭建 实现步骤:用whi…

    数据库 2023年6月14日
    062
  • MySQL扩展

    1、行转列 源数据: 目标数据: &#x6570;&#x636E;&#x51C6;&#x5907; — 建表插入数据 drop table if …

    数据库 2023年5月24日
    061
  • Linux 系统安装RocketMQ

    准备工作 1.去官网下载一个安装包 1.解压 unzip rocketmq-all-4.9.0-bin-release.zip -d /download/compress/ 2.进…

    数据库 2023年6月6日
    079
  • 一时兴起,写了个寻路代码

    看到一个面试题,是有关寻路的,于是想练练手,自己也写一个。 把地图坐标设计为二维数据,坐标点的值代表不同意义。 先上代码: 1 import java.util.ArrayList…

    数据库 2023年6月14日
    097
  • HTML详解

    一、初识HTML 初始基本标签代码解释 点击查看代码 <!–DOCTYPE:告诉浏览器我们要使用什么规范–> <!DOCTYPE html> <h…

    数据库 2023年6月16日
    083
  • Node安装与卸载命令汇总

    nvm(MAC管理node版本) 安装最新稳定版node: nvm install stable 安装指定版本: nvm install <version></v…

    数据库 2023年6月9日
    057
  • Consul 入门-初识

    背景 现状:单体架构逐渐被微服务架构所替代,原本两个功能模被拆分成了两个服务。原本两个模块块间的通信只需要 &#x51FD;&#x6570;&#x8C03;…

    数据库 2023年6月6日
    086
  • 安装Pycharm2022.2.1版本操作说明

    下载pycharm:https://www.jetbrains.com.cn/pycharm/download/#section=windows 我下载的是社区版”Co…

    数据库 2023年6月14日
    0156
  • windows下安装mysql5.7

    1.首先官网下载ZIP安装包(即以解压,配置的方式安装) 2.解压完成之后在目录下创建 my.ini文件 内容如下: [mysql]设置mysql客户端默认字符集default-c…

    数据库 2023年5月24日
    077
  • 翻译 | Kubernetes 将改变数据库的管理方式

    作者:Álvaro Hernández 当技术决策人考虑在 Kubernetes 上部署数据库时,面临的第一个问题就是:” Kubernetes 有应对有状态服务的能力…

    数据库 2023年5月24日
    0109
  • Mysql的读写分离中间件该怎么写?听我来说。

    网上有很多读写分离的中间件,像proxy,mycat等等,由于本人比较懒,懒得去读各种开源的东西,还是想造轮子来得快。 1、了解mysql通信协议,其中有分4.1之前和4.1版本的…

    数据库 2023年6月14日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球