数据库基础Ⅲ(字符串处理)

在Java语言中,我们经常会对字符串进行处理,在MySQL中,我们同样也有这样的函数来处理字符
串,即使用CONCAT函数。

concat函数

语法:

SELECT column_name1,CONCAT(column_name2,str,column_name3),column_name4 FROM table_name;
  • 首先这是一个查询语句,最基本的结构是 SELECT 列名 FROM 表名
  • CONCAT函数可以拼接列名,也可以拼接字符串
  • 在使用CONCAT函数的时候可以同时查询其他的列
  • CONCAT函数的参数之间用英文 , 分隔

比如现在我们想查询timi_adc表中英雄的id,以及名字+胜率,我们可以利用concat函数,把结果的可
阅读性变得更好:

SELECT
  id,
  concat(hero_name, '的胜率是', win_rate)
FROM
  timi_adc;

我们可以看到查询结果有一列CONCAT,输出的第一条数据是,后羿的胜率是0.4995。

需要注意的是,如果拼接的值中有NULL,则结果一律为NULL,这是NULL本身特性决定的。

别名

我们优化拼接的结果,给他起一个别名,比如我希望查询结果的列名叫result,那么我们可以这么写:

SELECT
  concat(hero_name, '的胜率是', win_rate) as result
FROM
  timi_adc
WHERE
  id = 3;

TRIM函数

数据库记录的是用户输入的数据,用户输入时的数据通常不是我们所预期的,有时候它会包含空格等我
们并不需要的字符,从而产生脏数据,为了保持数据的格式正确,我们经常会使用TRIM函数来清理数
据。

如使用

SELECT
  trim(hero_name),
  trim(fever)
FROM
  timi_adc
WHERE
  id = 20;

则在最后查找出的hero_name和fever的结果会自动去掉空格

语法拓展

trim()函数也可以精准的去掉前面或者后面的空格,或者其他的字符,语法如下

TRIM( BOTH|LEADING|TRAILING removed_str FROM str);
  • TRIM函数可以加上LEADING来只除去前面的空格,或者加上TRAILING来只除去后面的空格,如果都不加,则默认是BOTH。
  • TRIM函数可以删除指定的字符串内容,如果不加,则默认删除空格。

如:

SELECT
  TRIM(
    TRAILING 'Q'
    FROM
      fever
  )
FROM
  timi_adc

即去掉fever尾部的Q

REPLACE函数

TRIM()函数不能去掉字符串中间的值,如果要修改中间的值,我们可以使用REPLACE()函数,它的语法
如下:

UPDATE table_name 
SET colunm_name = 
REPLACE(column_name,string_find,string_to_replace) 
WHERE conditions;

大家可以看到这个语法很复杂,它可以把找到的某个字符串替换成另一个字符串,其实我们可以直接用
UPDATE语句修改,所以REPLACE()函数的实用性并不高。