一、字符串相关
1.根据指定字符替换
select replace(column_name, '旧字符', '新字符') from table_name;
2.截取指定下标开始的指定长度字符串
select substring(column_name ,start_index,字符长度) from table_name;
3.获取指定字符的下标
select charindex('字符',column_name) from table_name;
4.反转指定字段数据
select reverse(column_name) from table_name;
5.获取指定前几个字符
select left(column_name,字符长度) from table_name;
6.获取指定后几个字符
select right(column_name,字符长度) from table_name;
二、时间相关
1.将时间转为字符串(24小时制)
select to_char(column_name,'yyyy-MM-dd HH24:mi:ss') from table_name;
2.将字符串格式化为时间
select to_date('2024-02-29 14:11:24','yyyy-MM-dd HH24:mi:ss') from dual;
三、数据处理相关
1.查询根据指定字段去重(去除重复数据,保留id最大的重复数据)select * from 表名 where id in (select id from
(select su.*, row_number() over (partition by 去重字段名 order by su.id desc ) rn
from 表名 su where 其他条件 ) where rn = 1 )
2.查询重复多余的数据
select * from 表名 where id in (select id from
(select su.*, row_number() over (partition by 去重字段名 order by su.id desc ) rn
from 表名 su where 其他条件 ) where rn != 1 )
3.distinct过滤重复数据,限制较大,要过滤和获取较少的字段推荐使用。
select distinct 字段名1,字段名2 from 表名 where 其他条件;
四、语法差异
1.truncate和delete
- truncate 只能删除table,delete可以删除table、view等
- 用delete删除数据,表空间中其被删除数据的表占用的空间还在,便于以后的使用,另外它是“假相”的删除,相当于windows中用delete删除数据是把数据放到回收站中,还可以恢复,当然如果这个时候重新启动系统(OS或者RDBMS),它也就不能恢复了!
用truncate清除数据,内存中表空间中其被删除数据的表占用的空间会被立即释放,相当于windows中用shift+delete删除数据,不进回收站,不能够恢复! - truncate 后面不能带where条件,delete可以带where条件。