MySQL基础之字符函数

本文主要介绍几个MySQL常见的字符函数。

 

1、length()函数

length函数用于获取值的字节个数。str参数可以是一个字符串、整数、浮点数、布尔值、函数、null等。

注:如果参数值是null,则结果也是null。

length(str);

实例1:

mysql> select length('mysql') as mysql,
            length(12) as num,
            LENGTH(true) as tureR,
            LENGTH(false) as falseR,
            length(NOW()) as fun,
            length(null) as 'null';
+-------+-----+-------+--------+------+------+
| mysql | num | tureR | falseR | fun | null |
+-------+-----+-------+--------+------+------+
|     5 |   2 |     1 |     1  |  19 | NULL |
+-------+-----+-------+--------+------+------+

实例1的结果中 LENGTH(true) 和 LENGTH(false) 结果都是1,是因为布尔值ture返回1,false返回0。

实例2:

mysql> select LENGTH('mysql') as mysql,
    LENGTH('数据库') as '数据库',
    LENGTH('mysql数据库') as 'mysql数据库';
+-------+--------+-------------+
| mysql | 数据库 | mysql数据库 |
+-------+--------+-------------+
|     5 |     6 |     11 |
+-------+--------+-------------+

实例2中,LENGTH('mysql')的结果是5,而 LENGTH('数据库') 的结果是6,这个结果与当前客户端的字符集有关。

查看字符集:

mysql>  show VARIABLES like '%char%';

+--------------------------+-----------------------------------+
| Variable_name            | Value                             |
+--------------------------+-----------------------------------+
| character_set_client     | utf8                              |
| character_set_connection | utf8                              |
| character_set_database   | latin1                            |
| character_set_filesystem | binary                            |
| character_set_results    | utf8                              |
| character_set_server     | latin1                            |
| character_set_system     | utf8                              |
| character_sets_dir       | D:\software\mysql\share\charsets\ |
+--------------------------+-----------------------------------+

由上结果可以看到,character_set_client 的值是latin1,即当前使用的客户端的字符集是latin1,一个英文字符占1个字节,一个中文字符占2个字节。

如果函数的参数用到一个表的字段,则结果与表使用的字符集有关,如utf8一个中文字符是三个字节,gbk是两个字节。

 

2、concat()函数

concat函数参数用于连接参数,产生新的字符串。

CONCAT(str1,str2,...);

函数的参数可以最少需要一个,可以有多个,其类型可以是一个字符串、整数、浮点数、布尔值、函数等。

实例

mysql> select CONCAT('mysql',1,3.14,LENGTH('mysql'),'_',true) as out_put;
+---------------+
| out_put |
+---------------+
| mysql13.145_1 |
+---------------+
1 row in set (0.00 sec)

mysql> select CONCAT('mysql',1,3.14,LENGTH('mysql'),true,null) as out_put;
+---------+
| out_put |
+---------+
|  NULL |
+---------+

同样布尔值true返回1,如果有一个参数是null,则最终返回结果就是null

3、upper()和lower()函数

upper函数将参数值全部转为大写字母,lower函数将参数值全部转为小写字母。

UPPER(str)LOWER(str)

UPPER和LOWER均为一个参数,同样,参数值为布尔值时,true返回1,false返回0,值为null时,结果是NULL。

实例:

mysql> select upper('mysql') as upper,
        lower('MYSQL') lower;
+-------+-------+
| upper | lower |
+-------+-------+
| MYSQL | mysql |
+-------+-------+

 

4、substr()和substring()函数
substr和substring功能一样,用于对参数值进行截取。

根据参数列表不同,substr有四个重载的方法。str可以是任意有效值,但只有是数值,并且在str参数的长度之内可以成功截取,若str是null,则结果是null,其他返回空。str参数的长度是指字符的个数。

SUBSTR​​​​​​​(str,pos)
SUBSTR(str,pos,len)
SUBSTR(str FROM pos)
SUBSTR(str FROM pos FOR len)

SUBSTR(str,pos)实例:

mysql> select SUBSTR('mysql',2) as out_put;
+---------+
| out_put |
+---------+
| ysql |
+---------+
1 row in set (0.00 sec)

SUBSTR(str,pos):截取从指定索引字符后面所有字符,索引从1开始

SUBSTR(str,pos,len)实例:

mysql> select SUBSTR('mysql',2,2) as out_put;
+---------+
| out_put |
+---------+
| ys |
+---------+

SUBSTR(str,pos,len):截取从指定索引处指定长度字符。

SUBSTR(str FROM pos) 和 SUBSTR(str FROM pos FOR len)实例:​​​​​​​

mysql> select SUBSTR('mysql',2) as out_put1, 
    SUBSTR('mysql' FROM 2) as out_put2;
+----------+----------+
| out_put1 | out_put2 |
+----------+----------+
|     ysql | ysql |
+----------+----------+
1 row in set (0.00 sec)

mysql> select SUBSTR('mysql',2,2) as out_put1,
     SUBSTR('mysql' FROM 2 for 2) as out_put2;
+----------+----------+
| out_put1 | out_put2 |
+----------+----------+
|     ys   | ys |
+----------+----------+

从实例的结果可以看到,SUBSTR(str FROM pos)其实和 SUBSTR(str,pos) 功能一样,而 SUBSTR(str FROM pos FOR len) 和 SUBSTR(str,pos,len) 功能一样。

 

5、instr()函数

instr函数返回子串第一次出现的索引(从1开始),没有则返回0。​​​​​​​

INSTR(str,substr)

str参数和substr参数可以是任意有效值。

实例:

mysql> select INSTR('Mysql_mysql','m') as out_put;
+---------+
| out_put |
+---------+
| 1 |
+---------+

实例结果中看出,函数匹配时对大小写不敏感。

 

6、trim()函数

trim函数去参数值前后空格。​​​​​​​

TRIM([remstr FROM] str)

实例:

mysql> select TRIM(' mysql ') as out_put;
+---------+
| out_put |
+---------+
| mysql |
+---------+

也可以去除前后指定字符:

mysql> select TRIM('a' from 'aaMySQLaa') as out_put;
+---------+
| out_put |
+---------+
| MySQL |
+---------+

 

7、lpad函数

lpad函数作用:用指定的字符实现左填充至指定长度。​​​​​​​

LPAD(str,len,padstr)

实例:

mysql> select LPAD('mysql',10,'*') as out_put;
+------------+
| out_put |
+------------+
| *****mysql |
+------------+

上例中,在mysql左填充了5个*,返回值的字符个数是10。将函数第二个参数10改为2,看看结果:

mysql> select LPAD('mysql',2,'*') as out_put;
+---------+
| out_put |
+---------+
| my |
+---------+

2比mysql字符个数要少,所以不会填充,并且因为结果只需要返回2个字符,会把在索引2之后的字符截断。

 

8、replace()函数​​​​​​​

REPLACE(str,from_str,to_str)

replace函数作用:在str中找出所有from_str,用to_str替换。

实例:

mysql> select REPLACE('oracle数据库','oracle','mysql') as out_put;
+-------------+
| out_put |
+-------------+
| mysql数据库 |
+-------------+

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值