Mysql常用函数 -- 字符函数

-- 字符串函数

-- 1. length() -- 长度函数
/**
注意事项
  1.必须要有参数
  2.参数不能为 null 或null值表达式
  3.中文根据具体环境 ,一般情况utf8下 一个中文对应3个字符
  
*/
SELECT LENGTH(); -- error  , native function

SELECT LENGTH(123); -- 3

SELECT LENGTH(NULL); -- null

SELECT LENGTH('中a'); -- tf8 下 4(utf8下一个汉字三个字节)  gbk下3

SELECT LENGTH(NULL+'tom'); -- null

SELECT LENGTH(1+'a'); -- 1

SELECT LENGTH(1+'123'); -- 3

SELECT LENGTH(`name`) FROM ms_nick;


-- 2. concat() -- 连接函数
/**
  注意事项
   1.参数不可为空
   2.参数不可为 null 或 null值表达式 -- 无意义
   3、参数可以任意多个
   返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
*/
SELECT CONCAT(); -- error  , native function


SELECT CONCAT(NULL); -- null
SELECT CONCAT(123); -- 123
SELECT CONCAT(123,25); -- 12325

SELECT CONCAT(123,NULL); -- NULL
SELECT CONCAT(123,'tom','456'); -- 123tom456

-- 带连接符的 CONCAT_WS(separator,str1,str2,...) 

SELECT * FROM emp WHERE NAME LIKE CONCAT('%','tomcat','%');



-- 返回字符串 str 中子字符串的第一个出现位置。 没有则返回0
SELECT INSTR('abc','a'); -- 1
SELECT INSTR('abc','v'); -- 0



-- 填充函数
-- LPAD(str,len,padstr) 返回字符串 str, 其左边由字符串padstr 填补到len 字符长度。
-- 假如str 的长度大于len, 则返回值被缩短至 len 字符。
-- RPAD(str,len,padstr)  返回字符串str, 其右边被字符串 padstr填补至len 字符长度。
-- 假如字符串str 的长度大于 len,则返回值被缩短到与 len 字符相同长度。

SELECT LPAD('1200',5,'*'); -- *1200
SELECT LPAD('1200',3,'*'); -- 120

SELECT RPAD('1200',5,'*'); -- 1200*
SELECT RPAD('1200',3,'*'); -- 120

-- REPEAT(str,count) 
-- 返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。
--  若 count <= 0,则返回一个空字符串。若str 或 count 为 NULL,则返回 NULL 。
-- 若字符是空字符 则不会进行重复操作 
-- 但是 可以为 空格字符串
 SELECT REPEAT('A', 3); -- AAA
 SELECT REPEAT('A', -3); -- 0B
 SELECT REPEAT(NULL, -3); -- null
 SELECT REPEAT(NULL, 3); -- null
 SELECT REPEAT('', 3); -- ''
 SELECT REPEAT(' ', 3); -- '   '
 SELECT LENGTH(REPEAT('', 3)); -- 0   等价于 space(3)
 SELECT LENGTH(REPEAT(' ', 3)); -- 3
 SELECT LENGTH(SPACE(3)); -- 3
 
 
-- 去空格函数
-- TRIM(str)  返回字符串 str ,其首尾空格字符被删除。
-- LTRIM(str)  返回字符串 str ,其左空格字符被删除。
-- RTRIM(str)  返回字符串 str ,其尾空格字符被删除。
SELECT LENGTH(TRIM(' ba ')); -- 2
SELECT LENGTH(LTRIM(' ba ')); -- 3
SELECT LENGTH(RTRIM(' ba ')); -- 3
-- 强大的trim
-- TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) 
-- TRIM(remstr FROM  str) 
-- 返回字符串 str , 其中所有remstr 前缀和/或后缀都已被删除。
-- 若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则默认为BOTH 。 
-- remstr 为可选项,在未指定情况下,可删除空格。

 SELECT TRIM('  bar   '); -- 'bar'

 SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx'); -- 'barxxx'

 SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx'); -- 'bar'
 
 SELECT TRIM( 'x' FROM 'xxxbarxxx'); -- 'bar'
 
 SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz'); -- 'barx'






-- 替换函数
-- REPLACE(str,from_str,to_str) 
-- 返回字符串str 以及所有被字符串to_str替代的字符串from_str 。
-- 会替换所有匹配的内容
SELECT REPLACE('www.mysql.com', 'w', 'T'); -- TTT.mysql.com
-- 替换的字符将作为一个整体
SELECT REPLACE('www.mysql.com', 'ww', 'T'); -- Tw.mysql.com
-- 不存在则不变
SELECT REPLACE('www.mysql.com', 'wws', 'b'); -- www.mysql.com




-- 截取函数
-- RIGHT(str,len) 从字符串str 开始,返回最右len 字符。 
-- LEFT(str,len) 从字符串str 开始,返回最左len 字符。 
SELECT RIGHT('mysql', 3); -- sql
SELECT RIGHT('mysql', 5); -- mysql
SELECT RIGHT('mysql', 6); -- mysql
SELECT RIGHT('mysql', 0); -- 空字符串
SELECT RIGHT('mysql', -1); -- 空字符串
SELECT LEFT('mysql', 2); -- my
SELECT LEFT('mysql', 5); -- mysql
SELECT LEFT('mysql', 6); -- mysql
SELECT LEFT('mysql', 0); -- 空字符串
SELECT LEFT('mysql', -1); -- 空字符串

-- SUBSTRING(str,pos) , -- str 被截取的字符串 pos 开始截取的位置
-- SUBSTRING(str FROM pos) -- 等价于上面
-- SUBSTRING(str,pos,len) , -- str 被截取的字符串 pos 开始截取的位置 len 截取的长度
-- SUBSTRING(str FROM pos FOR len) -- 等价于上面

-- 不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。
-- 带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 
-- 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。
-- 假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。
-- 在以下格式的函数中可以对pos 使用一个负值。

SELECT SUBSTRING('tomcat',4); -- cat

SELECT SUBSTRING('tomcat' FROM 4); -- cat

SELECT SUBSTRING('tomcat',4,2); -- ca 

SELECT SUBSTRING('tomcat' FROM 4 FOR 2); -- ca 
 -- 注意,
  -- substr 等价于substring
  -- pos 是可以为负值  顺序为逆序
  -- 如果对len使用的是一个小于1的值,则结果始终为空字符串。
SELECT SUBSTRING('tomcat',-4); -- mcat
SELECT SUBSTR('tomcat',-4); -- mcat

SELECT SUBSTRING('tomcat',-4,2); -- mc 

SELECT SUBSTRING('tomcat',-4,-2); -- 空字符串


-- REVERSE(str) 反转函数
-- 返回字符串 str ,顺序和字符顺序相反。 

SELECT REVERSE('abcd'); -- dcba
SELECT REVERSE(NULL); -- null


-- 大小写转换
-- UPPER(str)

SELECT UPPER('tom'); -- TOM
SELECT LOWER('TOM'); -- tom


-- 'tomcat' 首字母转换为大写
SELECT CONCAT(UPPER(LEFT('tomcat',1)),SUBSTR('tomcat',2)) AS res;

猜你喜欢

转载自blog.csdn.net/sunrainamazing/article/details/80749524
今日推荐