sql函数
1.字符串替换
select replace('替换前字符串', '需替换字符串', '替换字符串');
例:把2替换为5
select replace('123', '2', '5');
2.字符串截取
select substring(col, '开始位置', '结束位置');
substring(col, 开始位置, 结束位置) in (......)
例:从第一位开始截取到第二位字符串
select substring('12324',1,2);
取一二位是54、57、58、59的code
substring(code,1,2) in ('54','57','58','59')
3.获取当前行
select ROW_NUMBER() OVER() as rownum
4.regex_split_to_table(col, ',');
利用正则表达式将字符串分割成表格。即将对指定列的值进行分割,分割后的每一个子串将转成一行,多个子串将转为多行。
例:select regexp_split_table('11, 12, 13', ',') as table_name;
5.regexp_split_to_array(col, ',') as array_table;
将某一字段的值以特定的符号进行分割后转换为数组的格式。
6.substring(string [ from int ] [ for int ])
第一个参数是需要被截取的字符串,第二个参数是第几位开始截取,起始位置是1,第三个参数表示截取的长度。
例:substring('abcdefg' from 2 for 3)
7.cast函数用于将某种数据类型的表达显式转换为另一种数据类型。
语法:cast ( expression as data_type )
要点:
(1)两个表达式的数据类型完全相同。
(2)两个表达式可隐性转换。
(3)必须显式转换数据类型。
8.convert()
和cast()函数功能相同,只是语法不同,cast()函数一般更容易使用,其功能也更简单。
convert()函数的优点事可以格式化日期和数值,他需要两个参数:第一个事目标数据类型;第二个是源数据;第三个是可选的,用于接受格式代码整型值。
例子:select convert ( varchar(5), 12345 )
9.stuff函数
stuff()函数用于删除指定长度的字符,并可以在指定的起点处插入另一组字符
语法:stuff ( character_expression, start, length, character_expression )
character_expression:一个字符数表达式。character_expression 可以是常量、变量,也可以是字符列或二进制数据列。
start:一个整数值,指定删除和插入的开始位置。如果 start 或 length 为负,则返回空字符串。如果 start 比第一个character_expression 长,则返回空字符串。start 可以是 bigint 类型。
length:一个整数。指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个character_expression 中的最后一个字符。length 可以是 bigint 类型。
返回类型:如果 character_expression 是受支持的字符数据类型,则返回字符数据。如果 character_expression 是一个受支持的 binary 数据类型,则返回二进制数据。
10.dateadd
返回已添加指定时间间隔的日期。
语法:dateadd( interval, number, date)
interval:字符串表达式,表示要添加的时间间隔。
number:数值表达式,表示要添加的时间间隔的个数。
date:variant或要添加interval的表示日期的文字。
例子:将95年1月31日加上一个月
dateadd( "m", 1, "31-jan-95" )
11.to_char
用于将日期、数字格式改成文本格式呈现,
其参数:to_char( values, 'format' , 'NLS_PARAM')
values:需要转变的值
'format':希望呈现的格式
'NLS_PARAM':可以是多种NLS_参数值,用于在to_char中临时指定NLS_的显式形式
12.SQL日期函数
(1)GETDATE函数
返回系统的当前日期,不使用参数,返回结果的长度为29个字符。
例:select GETDATE() as 现在时间
(2)DAY函数
返回一个整数,表示日期的“日”部分
例:select DAY(GETDATE()) as 日
(3)MONTH函数
返回一个表示日期中的月份日期
(4)YEAR函数
返回指定日期的年份
例:select YEAR(GETDATE()) as '年'
(5)DATEDIFF函数
返回日期和时间的边界数
例:select DATEDIFF(DAY, '2022-09-27', '2022-09-30') AS '时间差'
例:select DATEDIFF(HOUR, GETDATE(), '2022-09-28') as '小时差'
(6)
--本周
select * from tb where datediff(week , 时间字段 ,getdate()) = 0
--上周
select * from tb where datediff(week , 时间字段 ,getdate()) = 1
--下周
select * from tb where datediff(week , 时间字段 ,getdate()) = -1
--上月
Select * From TableName Where DateDiff(mm, DateTimCol, GetDate()) = 1
--本月
Select * From TableName Where DateDiff(mm, DateTimCol, GetDate()) = 0
--下月
Select * From TableName Where DateDiff(mm, GetDate(), DateTimCol ) = 1
昨天:dateadd(day,-1,getdate())
明天:dateadd(day,1,getdate())
上月:month(dateadd(month, -1, getdate()))
本月:month(getdate())
下月:month(dateadd(month, 1, getdate()))
---------------------------------------------------------------------------------
--昨天
Select * From TableName Where DateDiff(dd, DateTimCol, GetDate()) = 1
--明天
Select * From TableName Where DateDiff(dd, GetDate(), DateTimCol) = 1
--最近七天
Select * From TableName Where DateDiff(dd, DateTimCol, GetDate()) <= 7
---------------------------------------------------------------------------
当前年
select 提出日期, datepart(year,getdate()) as 当前年 from 供方资料表
前一年
select 提出日期, datepart(year,getdate())-1 as 当前年 from 供方资料表
后一年
select 提出日期, datepart(year,getdate())+1 as 当前年 from 供方资料表
13.replace() 替换函数
语法:replace(string_expression, string_pattern, string_replacement)
string_expression:字符串表达式
string_pattern:想要查找的子字符串
string_replacement:想要替换成的子字符串
例子:将name字段中的a替换为A
select name, replace(name, 'a', 'A') as name ......
14.coslesce()
主要用来进行空值处理。
语法:coalesce(expression, value1, value2, ......)
expression:为待检测的表达式,而后面的参数个数不定,返回包括expression在内的所有参数中的第一个非空表达式,
如果expression不为空则返回expression否则判断value1是否是空值,
如果value1不为空则返回value1,否则判断value2是否为空值,
以此类推。
15.current_date
返回当前会话时区中的当前日期,没有参数,没有括号。
例子:current_date-interval '1 mon'
16.abs
用于返回数字的绝对值,正数和0返回数字本身,负数返回数字的相反数。
17.concat
在字段中添加值,或者连接两个字段
语法:concat(需要添加的值,字段或字段里的值)
18.split_part(string, delimiter, position)
string:待分割的字符串
delimiter:制定分割字符串
position:返回第几个字符,从1开始,该参数必须是整数,如果参数值大于分割后字符串的数量,函数返回空串
例子:select split_part('2022-12-12', '-', 2)
返回:12
19.using
(1)、using等价于join操作的on
(2)、使用using有两个前提条件:查询必须是等值连接;等值连接中的列必须具有相同的名称和数据类型;
例:select * from table_a t1 join table_b t2 using (id) ;
20.upper(s)函数和ucase(s)函数,将字符串s中的字母字符全部转换为大写字母;
21.lower(S)函数和case(S)函数,将字符串S中的字母字符全部转换为小写字母substr;