一:内置函数

 MYSQL中提供了很多内置的函数,以下:

CHAR_LENGTH(str)
        返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。
        对于一个包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5。
eg:
mysql> select char_length('zhang')
    -> ;
+----------------------+
| char_length('zhang') |
+----------------------+
|                    5 |
+----------------------+
1 row in set (0.00 sec)


CONCAT(str1,str2,...)
        字符串拼接
        如有任何一个参数为NULL ,则返回值为 NULL。

mysql> select concat('zz','l')
    -> ;
+------------------+
| concat('zz','l') |
+------------------+
| zzl              |
+------------------+
1 row in set (0.01 sec)        
        
        
CONCAT_WS(separator,str1,str2,...)
        字符串拼接(自定义连接符)
        CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
        
mysql> select CONCAT_WS('**','zzl','cyy');
+-----------------------------+
| CONCAT_WS('**','zzl','cyy') |
+-----------------------------+
| zzl**cyy                    |
+-----------------------------+
1 row in set (0.00 sec)
        
        
CONV(N,from_base,to_base)
        进制转换

mysql> SELECT CONV('a',16,2);  表示将 a 由16进制转换为2进制字符串表示
+----------------+
| CONV('a',16,2) |
+----------------+
| 1010           |
+----------------+
1 row in set (0.01 sec)

mysql> SELECT CONV('10',8,2); 表示将 a 由8进制转换为2进制字符串表示
+----------------+
| CONV('10',8,2) |
+----------------+
| 1000           |
+----------------+
1 row in set (0.00 sec)

FORMAT(X,D)
    将数字X 的格式写为'#,###,###.##',以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。若  D 为 0, 则返回结果不带有小数点,或不含小数部分。

eg:
mysql> SELECT FORMAT(89333322.31,5);
+-----------------------+
| FORMAT(89333322.31,5) |
+-----------------------+
| 89,333,322.31000      |
+-----------------------+
1 row in set (0.00 sec)


INSERT(str,pos,len,newstr)
        在str的指定位置插入字符串
        pos:要替换位置其实位置
        len:替换的长度
        newstr:新字符串
        特别的:
            如果pos超过原字符串长度,则返回原字符串
            如果len超过原字符串长度,则由新字符串完全替换
mysql> select insert('zhang','1','1','Z')
    -> ;
+-----------------------------+
| insert('zhang','1','1','Z') |
+-----------------------------+
| Zhang                       |
+-----------------------------+
1 row in set (0.01 sec)


INSTR(str,substr)
        返回字符串 str 中子字符串的第一个出现位置。

mysql> select instr('zhang','an')
    -> ;
+---------------------+
| instr('zhang','an') |
+---------------------+
|                   3 |
+---------------------+
1 row in set (0.01 sec)

LEFT(str,len)
        返回字符串str 从开始的len位置的子序列字符。

mysql> select left('zhang',8)
    -> ;
+-----------------+
| left('zhang',8) |
+-----------------+
| zhang           |
+-----------------+
1 row in set (0.00 sec)

mysql> select left('zhang',3);
+-----------------+
| left('zhang',3) |
+-----------------+
| zha             |
+-----------------+
1 row in set (0.00 sec)

LOWER(str)
        变小写
mysql> select LOWER('ZHAng');
+----------------+
| LOWER('ZHAng') |
+----------------+
| zhang          |
+----------------+
1 row in set (0.00 sec)


UPPER(str)
        变大写
mysql> select UPPER('ZHAng');
+----------------+
| UPPER('ZHAng') |
+----------------+
| ZHANG          |
+----------------+
1 row in set (0.00 sec)        
        
SUBSTRING(str,pos,len)
        获取字符串子序列
mysql> select substring('zhang','3','2')
    -> ;
+----------------------------+
| substring('zhang','3','2') |
+----------------------------+
| an                         |
+----------------------------+
1 row in set (0.00 sec)
        
LOCATE(substr,str,pos)
        获取子序列索引位置

mysql> select locate('f','zhangfddadadafff','1');
+------------------------------------+
| locate('f','zhangfddadadafff','1') |
+------------------------------------+
|                                  6 |
+------------------------------------+
1 row in set (0.00 sec)

REPEAT(str,count)
        返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。
        若 count <= 0,则返回一个空字符串。
        若str 或 count 为 NULL,则返回 NULL 。
        
mysql> select repeat('zhang',3)
    -> ;
+-------------------+
| repeat('zhang',3) |
+-------------------+
| zhangzhangzhang   |
+-------------------+
1 row in set (0.01 sec)

mysql> select repeat('zhang',2)
    -> ;
+-------------------+
| repeat('zhang',2) |
+-------------------+
| zhangzhang        |
+-------------------+
1 row in set (0.00 sec)


REPLACE(str,from_str,to_str)
        返回字符串str 以及所有被字符串to_str替代的字符串from_str 。
        
mysql> select replace('zhangzhanling','ling','zhan')
    -> ;
+----------------------------------------+
| replace('zhangzhanling','ling','zhan') |
+----------------------------------------+
| zhangzhanzhan                          |
+----------------------------------------+
1 row in set (0.00 sec)
        
REVERSE(str)
        返回字符串 str ,顺序和字符顺序相反。
        

mysql> select reverse('zhang')
    -> ;
+------------------+
| reverse('zhang') |
+------------------+
| gnahz            |
+------------------+
1 row in set (0.01 sec)

RIGHT(str,len)
        从字符串str 开始,返回从后边开始len个字符组成的子序列

mysql> select right('zhang','3')
    -> ;
+--------------------+
| right('zhang','3') |
+--------------------+
| ang                |
+--------------------+
1 row in set (0.00 sec)

SPACE(N)
        返回一个由N空格组成的字符串。

mysql> select space(4)
    -> ;
+----------+
| space(4) |
+----------+
|          |
+----------+
1 row in set (0.00 sec)
        

不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。
SUBSTRING(str,pos) , 
mysql> SELECT SUBSTRING('zhangzhanling',5);
+------------------------------+
| SUBSTRING('zhangzhanling',5) |
+------------------------------+
| gzhanling                    |
+------------------------------+
1 row in set (0.00 sec)

SUBSTRING(str FROM pos)

mysql> SELECT SUBSTRING('zhangzhanling' from 5);
+-----------------------------------+
| SUBSTRING('zhangzhanling' from 5) |
+-----------------------------------+
| gzhanling                         |
+-----------------------------------+
1 row in set (0.00 sec)

SUBSTRING(str,pos,len) , 
mysql> SELECT SUBSTRING('zhangzhanling',4,5);
+--------------------------------+
| SUBSTRING('zhangzhanling',4,5) |
+--------------------------------+
| ngzha                          |
+--------------------------------+
1 row in set (0.00 sec)

SUBSTRING(str FROM pos FOR len)
mysql> SELECT SUBSTRING('zhangzhanling' from -4 for 2);
+------------------------------------------+
| SUBSTRING('zhangzhanling' from -4 for 2) |
+------------------------------------------+
| li                                       |
+------------------------------------------+
1 row in set (0.01 sec)
View Code

相关文章:

  • 2021-12-14
  • 2021-08-25
  • 2022-02-26
  • 2021-07-07
  • 2022-01-24
猜你喜欢
  • 2021-11-25
  • 2021-12-18
  • 2021-08-14
  • 2021-06-06
  • 2021-10-21
  • 2022-12-23
  • 2021-06-20
相关资源
相似解决方案