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;

 

 

  

 

posted @ 2022-09-07 15:53  小王同学学编程  阅读(171)  评论(0编辑  收藏  举报
levels of contents