注:从别的博客中了解整理
-
双大于号 (>> ):位移操作符
x >> y :表示将x的二进制右移y位,即x / (2的y次方),向下取整。
-
& :位运算符
将两个数的每一位进行与运算,只能用于整型和bit数据类型。
-
LPAD、 RPAD函数:左补齐、右补齐
LPAD(str1,length,str2):str1字符串长度不足length,用str2左补齐;长度超过length,截取至length长度。
-
substr函数:截取字符串(与substring函数相同)
SUBSTR (str, pos) 另一种写法是 SUBSTR(str from pos)
截取从pos位置开始到最后的所有str字符串
SUBSTR (str, pos, len) 另一种写法是SUBSTR(str from pos for len)
参数说明:
- str为列名/字符串;
- pos为起始位置;mysql中的起始位置pos是从1开始的;如果为正数,就表示从正数的位置往下截取字符串(起始坐标从1开始),反之如果起始位置pos为负数,那么 表示就从倒数第几个开始截取;
- len为截取字符个数/长度。
select substr('2023-09-13',6); -- 返回结果09-13
select substr('2023-09-13'from 6);
select substr('2023-09-13',6,2); -- 返回结果09
select substr('2023-09-13'from 6 for 2);
select substr('2023-09-13',-2,2); -- 返回结果13
-
instr函数:获取子字符串第一次出现位置的索引(从1开始)。如果没有找到,返回0。instr(str, substr);
-
TIMESTAMPDIFF函数:计算两个日期之间的时间差(datetime_expr2-datetime_expr1)。
datetime_expr可以是DATE或DATETIME类型。
unit是比较的时间差单位:SECOND、MINUTE、HOUR、DAY、MONTH、QUARTER(季度)、YEAR
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
select TIMESTAMPDIFF(year,'2023-09-13','2021-01-02'); -- 返回-2
select TIMESTAMPDIFF(year,'2023-09-13',CURDATE()); --比较当前日期和'2023-09-13'年份差几年
-
INTERVEL()函数
-- 返回大于50的第一个数字的位置,从20开始,20的位置是0。所以结果返回4
SELECT INTERVAL(50,20,32,38,40,56,55);
- date_sub()函数和interval联合使用
select date_sub(curdate(), interval 1 day); -- 当前日期2023-12-29,减去间隔一天,返回2023-12-28;
select date_format(date_sub(curdate(), interval 1 day), '%Y%m%d'); -- 当前日期2023-12-29,减去间隔一天,返回2023-12-28;使用日期格式显示为20231228
REPLACE()
函数用于替换字符串中的某个子串
REPLACE(str, from_str, to_str)
select replace('儿童|少年|青年','|','、')from dual; -- 输出 儿童、少年、青年
-
str
:原字符串。 -
from_str
:需要被替换的子串。如果from_str
在str
中不存在,那么str
不会发生任何改变。 -
to_str
:替换后的子串 -
例子:
假设我们有一个表
example
,其中有一个字段data
,我们想要将data
字段中的所有'apple'
替换为'orange'
。 -
SET data = REPLACE(data, 'apple', 'orange');
执行上述SQL语句后,
example
表中所有data
字段的'apple'
将被替换为'orange'
。 -
ROW_NUMBER()
ROW_NUMBER()
是一个窗口函数,它为结果集中的每一行分配一个唯一的序号,序号从1开始,按照指定的顺序递增。这个函数通常与OVER()
子句一起使用,以定义窗口函数的作用域和排序的顺序。-
ROW_NUMBER()
函数的基本语法如下: -
SELECT column1, column2, ..., ROW_NUMBER() OVER (
PARTITION BY partition_expression
ORDER BY sort_expression [ASC | DESC]
) AS row_num
FROM table_name;column1, column2, ...
是你想要选择的列。 PARTITION BY partition_expression
定义了窗口函数的分区,如果省略,则整个结果集作为一个分区。ORDER BY sort_expression [ASC | DESC]
定义了窗口函数的排序顺序,可以指定升序(ASC,默认值)或降序(DESC)。
concat() 和concat_ws()
concat()连接字符串
concat_ws()使用分隔符连接
select concat('北京','上海','天津'); -- 北京上海天津
select concat_ws(',','北京','上海','天津'); --北京,上海,天津