第7讲——MySQL数据类型和运算符2

92 阅读5分钟

❤️持续创作,加速成长!开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情

🎨 个人介绍

👉大家好,我是:旺仔不是程序员

👉认真分享技术,记录学习过程的点滴,如果我的分享能为你带来帮助,请支持我奥🍻

👉你的支持,是我每天更新的动力。

👉赞点:👍 留言:✍ 收藏:⭐

👉个人格言:想法一步一步的落实,才是你我前进最佳选择。

my.jpeg

字符串函数

1. 通用字符串函数

  1. 计算字符串字符数的函数和字符串长度的函数
 # 使用CHAR_LENGTH函数计算字符串字符个数,记录字符数
 # 输入语句如下:中国 2 个字符
 SELECT CHAR_LENGTH('date'), CHAR_LENGTH('中国');
 # 使用LENGTH函数计算字符串长度,记录字节数 
 # 输入语句如下:中国 6 字节
 SELECT LENGTH('date'), LENGTH('中国');
  1. 合并字符串函数CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…)
 # 使用CONCAT函数连接字符串,有NULL 返回Null
 # 输入语句如下:
 SELECT CONCAT('MySQL', '5.6'),CONCAT('My',NULL, 'SQL');
 # 使用CONCAT_WS函数连接带分隔符的字符串,有NULL,排除NULL,继续连接后边的
 # 输入语句如下:
 SELECT CONCAT_WS('-', '1st','2nd', NULL,'3rd'), CONCAT_WS('*', '1st', NULL, '3rd');
  1. 替换字符串的函数INSERT(s1,x,len,s2)
 # 使用INSERT函数进行字符串替代操作,输入语句如下:
 ## 将下面第2个字符开始,以后的字符替换 
 SELECT INSERT('Quest', 2, 4, 'What') AS col1, # 输出结果:QWhat
 ## 如果后边没有,不追加,下边代码不做替换,-1代表从最后一个开始
 SELECT INSERT('Quest', -1, 4, 'What') AS col2,  # 输出结果:Quest
 ## 如果超出替换字符的最大长度,正常替换就好
 SELECT INSERT('Quest', 3, 100, 'Wh') AS col3; # 输出结果:QuWh
  1. 字母大小写转换函数
 # 使用LOWER函数或者LCASE函数将字符串中所有字母字符转换为小写,输入语句如下:
 SELECT LOWER('BEAUTIFUL'), LCASE('Well');
 # 使用UPPER函数或者UCASE函数将字符串中所有字母字符转换为大写,输入语句如下:
 SELECT UPPER('black'), UCASE('BLacK');
 ​
  1. 删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)
 # 使用LTRIM函数删除字符串左边的空格,输入语句如下:
 SELECT '(  book  )',CONCAT('(',LTRIM('  book  '),')');
 # 使用LTRIM函数删除字符串右边的空格,输入语句如下:
 SELECT CONCAT( '(',  RTRIM ('  book  '), ')');
 SELECT '(  book  )',CONCAT('(', RTRIM ('  book  '),')');
 # 使用LTRIM函数删除字符串两边的空格,输入语句如下:
 SELECT CONCAT( '(',  TRIM('  book  ') , ')');
 SELECT '(  book  )',CONCAT('(', TRIM('  book  '),')');
  1. 获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len)
 # 使用SUBSTRING函数获取指定位置处的子字符串,输入语句如下:
 ## 从第五个开始获取,包括第五个,获取后边所有
 SELECT SUBSTRING('breakfast',5) AS col1
 ## 从第五个开始获取,包括第五个,获取后边3个
 SELECT SUBSTRING('breakfast',5,3) AS col2
 ## 从倒数第3个开始获取,获取后边所有
 SELECT SUBSTRING('lunch', -3) AS col3
 ## 从倒数第5个开始获取,获取后边3个
 SELECT SUBSTRING('lunch', -5, 3) AS col4
 # 使用MID()函数获取指定位置处的子字符串,输入语句如下:
 SELECT MID('breakfast',5) as col1
 SELECT MID('breakfast',5,3) as col2
 SELECT MID('lunch', -3) as col3
 SELECT MID('lunch', -5, 3) as col4

2. 高级字符串操作

  1. 获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)
 # 使用LEFT函数返回字符串中左边的字符,输入语句如下:
 SELECT LEFT('football', 5);
 # 使用RIGHT函数返回字符串中右边的字符,输入语句如下:
 SELECT RIGHT('football', 4);
  1. 填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)
 # 使用LPAD函数对字符串进行填充操作
 # 返回字符串s1,其左边由字符串s2填补到len字符长度
 # 假如s1的长度大于len,则返回值被缩短至len字符
 # 输入语句如下:
 SELECT LPAD('hello',4,'dd'), LPAD('hello',10,'dd');
 # 使用RPAD函数对字符串进行填充操作,输入语句如下:
 SELECT RPAD('hello',4,'?'), RPAD('hello',10,'?');
  1. 删除指定字符串的函数TRIM(s1 FROM s)
 # 使用TRIM(s1 FROM s)函数删除字符串中两端指定的字符,输入语句如下:
 SELECT TRIM('xy' FROM 'xyxboxyokxxyxy') ;
  1. 字符串逆序的函数REVERSE(s)
 # 使用REVERSE函数反转字符串,输入语句如下:
 SELECT REVERSE('abc');
  1. 返回指定位置的字符串的函数
 # 使用ELT函数返回指定位置字符串,对应位置没有值,返回null
 # 输入语句如下:
 SELECT ELT(3,'1st','2nd','3rd'), ELT(3,'net','os');
  1. 返回指定字符串位置的函数FIELD(s,s1,s2,…,sn)
 # 使用FIELD函数返回指定字符串第一次出现的位置
 # 存在返回位置,不存在返回0
 # 输入语句如下:
 SELECT FIELD('Hi', 'hihi', 'Hey', 'Hi', 'bas') as col1
 SELECT FIELD('Hi', 'Hey', 'Lo', 'Hilo',  'foo') as col2
  1. 返回子串位置的函数FIND_IN_SET(s1,s2)
 # 使用FIND_IN_SET()函数返回子字符串在字符串列表中的位置,输入语句如下:
  SELECT FIND_IN_SET('Hi','hihi,Hey,Hi,bas');

3. 不常用字符操作

  1. 重复生成字符串的函数REPEAT(s,n)
 # 使用REPEAT函数重复生成相同的字符串,输入语句如下:
  SELECT REPEAT('MySQL', 3);
  1. 空格函数SPACE(n)和替换函数REPLACE(s,s1,s2)
 # 使用SPACE函数生成由空格组成的字符串,输入语句如下:
 SELECT CONCAT('(', SPACE(6), ')' );
 # 使用REPLACE函数进行字符串替代操作,输入语句如下:
 SELECT REPLACE('xxx.mysql.com', 'x', 'w');
  1. 比较字符串大小的函数STRCMP(s1,s2)
 # 使用STRCMP函数比较字符串大小,
 # 第一个小,返回-1,第一个大,返回1,相等返回0
 # 输入语句如下:
 SELECT STRCMP('txt', 'txt2'),STRCMP('txt2', 'txt'), STRCMP('txt', 'txt');
  1. 匹配子串开始位置的函数
 # 使用LOCATE,POSITION,INSTR函数查找字符串中指定子字符串的开始位置,输入语句如下:
 SELECT LOCATE('ball','football'),POSITION('ball'IN 'football'),INSTR ('football', 'ball');
  1. 选取字符串的函数MAKE_SET(x,s1,s2,…,sn)
 # 使用MAKE_SET根据二进制位选取指定字符串,输入语句如下:
 SELECT  MAKE_SET(1,'a','b','c') as col1
 # 1与4进行或操作之后的二进制值为0101,从右到左第1位和第3位为1
 SELECT  MAKE_SET(1 | 4,'hello','nice','world') as col2
 # 如有有null,nullb不被计算在内
 SELECT  MAKE_SET(1 | 4,'hello','nice',NULL,'world') as col3
 SELECT  MAKE_SET(0,'a','b','c') as col4