1、字符串在字符串中的位置
函数
POSITION(substring in string)
语法:
- substring参数是您要查找的字符串
- 这个串参数是要搜索子字符串的字符串。
- POSITION()函数返回一个整数,该整数表示子字符串在字符串中的位置。如果在字符串中未找到子字符串,则POSITION()函数将返回零(0)。如果子字符串或字符串参数为null,则返回null。
示例:
若依部门表查询
select dept_id,dept_name,ancestors,position(',1,' in ','||ancestors||',') from sys_dept
2、如果为空则返回指定数据
函数
COALESCE(args, data)
COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。
语法:
args
参数是要判断是否为空的字段或值data
如果args
为空则返回data
的值
实例:
若依用户表查询,如果部门id字段为空则返回0
select COALESCE(dept_id, 0) from sys_user
3、截取字符串
select SUBSTRING('abcd',2); -- result:bcd 表示从下标从2开始截取到末尾
select SUBSTRING('abcd',1,2); -- result:ab 表示从下标从1开始,截取2个字符
4、替换字符串
REPLACE(source, old_text, new_text );
REPLACE()
函数接受三个参数:
source
是您要替换的字符串。old_text
是您要搜索和替换的文本。如果old_text
在字符串中多次出现,则所有出现的位置都将被替换。new_text
是将替换旧文本 (old_text
) 的新文本。
实例:
将 URL 中的子字符串tt
替换为xx
-- 查询
SELECT REPLACE ( 'https://halo.zhangyongkang.vip', 'tt', 'xx');
-- 返回
hxxps://halo.zhangyongkang.vip
5、日期与字符串互转
- 日期 -> 字符串
sql
-- 日期转字符串
to_char(date, formatString)
-- 例子:
select to_char(now(), 'YYYY-MM-DD HH24:MI:SS');
-- 结果:
2024-12-24 11:10:40
- 字符串 -> 日期
sql
-- 字符串 -> 日期
to_date('dateString', 'formatString')
-- 例子:
select to_date('2024-12-24 11:10:40', 'YYYY-MM-DD HH24:MI:SS');
-- 结果
2024-12-24
- 字符串 -> 日期时间
sql
-- 字符串 -> 日期时间
to_timestamp('2024-12-24 18:34:00', 'YYYY-MM-DD HH24:MI:SS')
-- 例子:
select to_timestamp('2024-12-24 18:34:00', 'YYYY-MM-DD HH24:MI:SS')
-- 结果:
2024-12-24 18:34:00+08
6、创建自增序列
- 创建
sql
CREATE SEQUENCE sequence_name
START WITH 1 --开始值
INCREMENT BY 1 --每次新增数(步长)
NO MINVALUE --无最小值
NO MAXVALUE --无最大值
CACHE 1; --缓存序列数量
- 获取下一个序列号
sql
select nextval('sequence_name')
- 修改当前序列值
sql
ALTER SEQUENCE sequence_name RESTART WITH 10
7、四舍五入与截断
四舍五入
ROUND(number, decimal_places)
- **number:**需要四舍五入的数字
- decimal_places: 四舍五入后的位数
-- 例子
SELECT ROUND(123.456789, 2); -- 结果: 123.46
SELECT ROUND(123.654321, 4); -- 结果: 123.6543
截断
函数:TRUNC(number, scale)
- **number:**需要截断的小数
- **scale:**截断后的位数
-- 例子
SELECT TRUNC(10.1212, 2); -- 结果:10.12
SELECT TRUNC(10.9696, 2); -- 结果:10.969
评论区