DATE_FORMAT 时间转换


SELECT '2023-01-02 03:04:05'; -- 输出:2023-01-02 03:04:05
SELECT DATE_FORMAT('2023-01-02 03:04:05', '%Y-%m-%d'); -- 输出:2023-01-02
SELECT DATE_FORMAT('2023-01-02', '%Y-%m-%d %H:%i:%s'); -- 输出:2023-01-02 00:00:00

常用占位符有:
%Y:四位数的年份(例如:2023)
%m:两位数的月份(01-12)
%d:两位数的日期(01-31)
%H:24小时制的小时数(00-23)
%i:两位数的分钟数(00-59)
%s:两位数的秒数(00-59)

CONCAT 字符拼接

在MySQL中,CONCAT(str1, str2, ..., strn) 字符拼接参数的数量有一定限制(通常为4096个参数)

CONCAT()函数接受多个参数,将它们按顺序连接在一起形成一个新的字符串。

获得数据库名FOR下所有的 数据表名、截断表的SQL语句!

SELECT '我是谁?'; -- 输出:我是谁?
SELECT CONCAT('我是谁?','🛻','✈️'); -- 输出:我是谁?🛻✈️

-- 注意 如果遇到NULL,整个函数返回都是NULL
SELECT CONCAT('Apple', NULL, 'Orange'); -- 输出:NULL
SELECT CONCAT('Apple', IF(NULL IS NOT NULL,'原本的NULL',''), 'Orange'); -- 输出:AppleOrange

-- 示例
SELECT
	TABLE_NAME,
	CONCAT( "TRUNCATE TABLE ", TABLE_NAME, ";" ) 
FROM
	information_schema.TABLES 
WHERE
	TABLE_SCHEMA = 'FOR'

CONCAT_WS 分隔符拼接

在MySQL中,CONCAT_WS(separator, str1, str2, ..., strn) 参数的数量有一定限制(通常为4096个参数)

参数:separator是用作分隔符的字符串,str1, str2, ..., strn是要连接的字符串。

SELECT CONCAT_WS(',', 'Apple', NULL, 'Orange'); -- 输出:Apple,Orange
SELECT CONCAT_WS(',', 'Apple', IF(NULL IS NOT NULL,'原本的NULL',''), 'Orange'); -- 输出:Apple,,Orange

CHAR_LENGTH 计算字符个数

使用方式:CHAR_LENGTH('待检查的内容')

SELECT CHAR_LENGTH("ab"); -- 输出:2
SELECT CHAR_LENGTH("123"); -- 输出:3
SELECT CHAR_LENGTH("你好世界"); -- 输出:4
SELECT CHAR_LENGTH("你好世界") + CHAR_LENGTH("zanglikun.com"); -- 输出:17

LENGTH 计算字节数

SELECT CHAR_LENGTH('你好'); -- 输出:2
SELECT LENGTH('你好'); -- 输出:6

-- 说明在数据库字符集utf8mb4下中文占用3个字节

IF 条件判断

使用方式:本意就是:IF(条件, 条件true执行, 条件false执行)

SELECT IF('abc'='abc','对了','错了'); -- 输出:对了
SELECT IF('abc'='abcd','对了','错了'); -- 输出:错了
SELECT IF('abc'='abcd', '不是我',IF(TRUE,'我在这里','也不是我')); -- 输出:我在这里

SUBSTRING 位数范围截取

SUBSTRING(string,start_position,length) 位数范围截取

三个参数的含义:string目标字符串,start_position 从第几位开始截取,length从左到右开始截取x位。注意MySQL首位是1,不是Java数组概念中的0

-- 截取Hello,World中第一位到第五位。
SELECT SUBSTRING('Hello,World', 1, 5); -- 输出:Hello

-- 截取ld 注意from是负数没有任何含义,因为to是从左到右,所以没有意义!
SELECT SUBSTRING('Hello,World', 10, 2); -- 输出:ld
SELECT SUBSTRING('Hello,World', -2, 2); -- 输出:ld


SELECT SUBSTRING('Hello,World', 2) -- 去除前2位 输出:ello,World

SUBSTRING_INDEX 分隔符截取

SUBSTRING_INDEX(string,separator,count) 接受三个参数:string字符串、separator分隔符和count计数。计数参数决定了要返回的部分的位置。

注意计数的参数可以是正数、也可以是负数。正数,就是从字符串头部选择。负数,就是从字符串尾部倒着第x位,就是-x。

-- 示例用法:截取Hello,World,HI,CHINA中以','分割后取第x个
SELECT SUBSTRING_INDEX('Hello,World,HI,CHINA', ',', 1); -- 输出:Hello
SELECT SUBSTRING_INDEX('Hello,World,HI,CHINA', ',', 2); -- 输出:Hello,World
SELECT SUBSTRING_INDEX('Hello,World,HI,CHINA', ',', 3); -- 输出:Hello,World,HI


SELECT SUBSTRING_INDEX('Hello,World,China', ',', 4); -- 输出:Hello,World,China
SELECT SUBSTRING_INDEX('Hello,World,China', ',', 3); -- 输出:Hello,World,China
SELECT SUBSTRING_INDEX('Hello,World,China', ',', 2); -- 输出:Hello,World
SELECT SUBSTRING_INDEX('Hello,World,China', ',', 1); -- 输出:Hello
SELECT SUBSTRING_INDEX('Hello,World,China', ',', 0); -- 输出:空白
SELECT SUBSTRING_INDEX('Hello,World,China', ',', -1); -- 输出:CHINA
SELECT SUBSTRING_INDEX('Hello,World,China', ',', -2); -- 输出:World,China
SELECT SUBSTRING_INDEX('Hello,World,China', ',', -3); -- 输出:Hello,World,China
SELECT SUBSTRING_INDEX('Hello,World,China', ',', -4); -- 输出:Hello,World,China


-- 提取:Hello,World,China中的Wordld
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('Hello,World,China', ',', 2), ',', -2); -- 输出:Hello,World
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('Hello,World,China', ',', 2), ',', -1); -- 输出:World
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('Hello,World,China', ',', 2), ',', 0); -- 输出:空白内容
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('Hello,World,China', ',', 2), ',', 1); -- 输出:Hello
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('Hello,World,China', ',', 2), ',', 2); -- 输出:Hello,World

UPPER 大写

SELECT UPPER('abcEFG你好123'); -- 输出:ABCEFG你好123

LOWER 小写

SELECT LOWER('abcEFG你好123'); -- 输出:abcefg你好123
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤