mysql数据库之字符串函数

时间:2024-11-23 09:46:01

字符串函数:

1、LOWER(column|str)

将字符串参数值转换为全小写字母后返回

  • 例1: SELECT lower(‘SQL Course’) ;

    在这里插入图片描述

2、UPPER(column|str)

将字符串参数值转换为全大写字母后返回

  • 例2: SELECT upper(‘SQL Course’) ;

    在这里插入图片描述

3、CONCAT(column|str1, column|str2,…)

将多个字符串参数首尾相连后返回

  • 例3: SELECT concat(‘My’, ‘S’, ‘QL’);

在这里插入图片描述
注意 :如果有任何参数为null,则函数返回null

  • 例4: SELECT concat(‘My’, NULL, ‘QL’);


如果参数是数字,则自动转换为字符串

  • 例5:SELECT concat(14.3);
    在这里插入图片描述

  • 例6:拼接表字段

4、CONCAT_WS(separator,str1,str2,…)

将多个字符串参数以给定的分隔符_separator_首尾相连后返回

  • 例6: SELECT concat_ws(‘,’,‘First name’,‘Second name’,‘Last Name’);
    在这里插入图片描述

注意 :即使有任何参数为null,函数也不返回null,而是直接忽略它

  • 例7: SELECT concat_ws(‘,’,‘First name’,NULL,‘Last Name’);

    在这里插入图片描述

5、SUBSTR(str,pos[,len])

从源字符串str中的指定位置pos开始取一个字串并返回。len指定子串的长度,如果省略则一直取到字符串的末尾。该函数是函数SUBSTRING()的同义词。len为负值表示从源字符串的尾部开始取起

  • 例8:
SELECT  substring('hello world',5);
SELECT  substring('hello world',5,3);
SELECT  substring(‘hello world’,-5);
  • 1
  • 2
  • 3

在这里插入图片描述

6、LENGTH(str):

返回字符串的存储长度

  • 例9:SELECT length(‘text’),length(‘你好’);

    在这里插入图片描述

7、CHAR_LENGTH(str):

返回字符串中的字符个数

  • 例10:SELECT char_length(‘text’),char_length(‘你好’);
    在这里插入图片描述

8、INSTR(str, substr)

从源字符串str中返回子串substr第一次出现的位置

  • 例11:SELECT instr(‘foobarbar’, ‘bar’);

    在这里插入图片描述

9、LPAD(str, len, padstr):

在源字符串的左边填充给定的字符padstr到指定的长度len,返回填充后的字符串

  • 例12:SELECT lpad(‘hi’,4,‘??’);
    数字为填充完后的字符串的总长度

    在这里插入图片描述
    注意: 字符串需要加单引号,否则会被当做表的列来处理。

10、RPAD(str, len, padstr)

在源字符串的右边填充给定的字符padstr到指定的长度len,返回填充后的字符串

  • 例13:SELECT rpad(‘hi’,5,‘?’);

11、TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr FROM] str)

从源字符串str中去掉两端、前缀或后缀字符remstr并返回。如果不指定remstr,则去掉str两端的空格。不指定BOTH、LEADING、TRAILING ,则默认为 BOTH

  • 例14:
SELECT trim('  bar   ') ;
SELECT trim(LEADING 'x' FROM 'xxxbarxxx');
SELECT trim(BOTH 'x' FROM 'xxxbarxxx');
SELECT trim(TRAILING 'xyz' FROM 'barxxyz');
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

12、REPLACE(str, from_str, to_str):

在源字符串str中查找所有的子串form_str(大小写敏感),找到后使用替代字符串to_str替换它。返回替换后的字符串

  • 例15:SELECT replace(‘’, ‘w’, ‘Ww’);
    在这里插入图片描述

13、LTRIM(str),RTRIM(str)

去掉字符串的左边或右边的空格

  • 例16:SELECT ltrim(’ barbar ‘) rs1, rtrim(’ barbar ') rs2;
    在这里插入图片描述

14、REPEAT(str, count)

将字符串str重复count次后返回

  • 例17:SELECT repeat(‘MySQL’, 3);
    在这里插入图片描述

15、REVERSE(str)

将字符串str反转后返回

  • 例18:SELECT reverse(‘abc’);
    在这里插入图片描述

16、CHAR(N,… [USING charset_name])

它将每个参数N解释为整数(字符的编码),并返回每个整数对应的字符所构成的字符串。NULL值被忽略。

  • 例19:SELECT char(77,121,83,81,‘76’),char(77,77.3,‘77.3’);
    默认情况下,该函数返回二进制字符串。如果想返回针对特定字符集的字符串,使用using选项。
    在这里插入图片描述

  • 例20:SELECT charset(char(0x65)), charset(char(0x65 USING utf8));
    在这里插入图片描述


17、FORMAT(X,D[,locale])

以格式‘#,###,###.##’格式化数字X。D指定小数位数。Locale指定国家语言,它决定了小数点和千分位分隔符的使用。默认的locale为’en_US‘

18、SPACE(N)

返回由N个空格构成的字符串

  • 例22:SELECT space(6);
    在这里插入图片描述

19、LEFT(str, len)

返回最左边的len长度的子串

  • 例23:SELECT left(‘foobarbar’, 5);
    在这里插入图片描述

20、RIGHTT(str, len)

返回最右边的len长度的子串

  • 例24:SELECT right(‘foobarbar’, 4);
    在这里插入图片描述

21、STRCMP(expr1,expr2)

如果两个字符串是一样的则返回0;如果第一个小于第二个则返回-1;否则返回1

  • 例25:
SELECT strcmp('text', 'text2'),strcmp('text2', 'text');
SELECT strcmp('text', 'text');
  • 1
  • 2

在这里插入图片描述

  • 例26:
SELECT format(12332.123456, 4),format(12332.2,0);
SELECT format(12332.2,2,'de_DE');
  • 1
  • 2

在这里插入图片描述


数字函数

1、ROUND(X[,D])

将数字X四舍五入到指定的小数位数D。如果不指定D,则默认为0。如果D是负数,表示从小数点的左边进行四舍五入

  • 例1:
SELECT round(1.58),round(1.298, 1);
SELECT round(1.298, 0),round(23.298, -1);
  • 1
  • 2

在这里插入图片描述

2、TRUNCATE(X,D)

将数字X截断到指定的小数位数D(不四舍五入)。D为0表示不要小数。如果D是负数,表示从小数点的左边进行截断

SELECT truncate(1.999,1),truncate(1.999,0);
SELECT truncate(-1.999,1),truncate(122,-2);
  • 1
  • 2

在这里插入图片描述

3、MOD(N,M), N % M, N MOD M

返回数字N除以M后的余数

SELECT  mod(234, 10),253 % 7,29 MOD 9;
  • 1

在这里插入图片描述

注意:余数可以有小数。除数为0不抛出异常。

SELECT  mod(34.5,3),mod(12,0);
  • 1

在这里插入图片描述

4、CEIL(X), CEILING(X)

返回不小于X的最小整数

SELECT ceiling(1.23),ceil(-1.23);

在这里插入图片描述

5、FLOOR(X)

返回不大于X的最大整数

SELECT floor(1.23),floor(-1.23);

在这里插入图片描述

6、RAND(), RAND(N)

返回一个随机的浮点数v,0 <= v < 1.0。如果指定整数N,则用作种子值,它产生一个可重复的数字序列

CREATE TABLE  t (i  INT);
INSERT INTO  t  VALUES (1),(2),(3);
SELECT  i,  rand() FROM t;
SELECT  i,  rand(3) FROM t;
SELECT  i,  rand() FROM t;
SELECT  i,  rand(3) FROM t;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

  • 比较第1条和第3条语句,每次产生的随机数是不同的;比较第2条和第4条语句,每次产生的随机数是相同的

7、要想得到一个随机整数 R, i <= R < j,可以使用以下表达式: FLOOR(i + RAND() * (ji))。

例如,要得到 7 <= R < 12,使用以下语句:

SELECT floor(7 + (rand() * 5));
在这里插入图片描述

当在 WHERE 子句中使用RAND()时,每次当WHERE执行时都要重新计算 RAND()

不能在ORDER BY子句中使用带有随机值的列。但是可以以随机的顺序从表中检索行。
例如:

SELECT * FROM players ORDER BY RAND();

ORDER BY RAND()常和LIMIT子句一起使用:

SELECT * FROM table1, table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000;