常用的数据库函数

不定时更新···

------------------------------------------------------------------------------

汇总

功能语法
进位select ceiling(4.1)  =5
select floor(4.9) =4
select round(4.5,0) 四舍五入
通过LIKE在另一个字符串中查找字符串

select a.name,b.company from a a,b b where a.tag like '%'||b.tag||'%'
select a.name,b.company from a a,b b where a.tag like concat ('%',b.tag ,'%')-sqlserver可用
select a.name,b.company from a a,b b where a.tag like '%' +b.tag +'%'

替换函数

REPLACE ( string_expression , string_pattern , string_replacement )

参数:
string_expression 需要替换的字段(可以是字符或二进制数据类型)
string_pattern 查询的子字符串。(可以是字符或二进制数据类型。[不能是空字符串] )
string_replacement 替换的字符串。(可以是字符或二进制数据类型)

将数字数据转为字符数据

str(float_expressionlengthdecimal)

float_expression:为要转换的数字数据;

Length:转换后字符的长度,包括空格\小数点\符号\数字,默认转换后的长度为10;(注意:如果位数不到的话全是空格补充)

Decimal:返回的字符数据中包含小数点右边的小数位数,默认为0,取值四舍五入

字段前面填充0使得长度为6

REPLACE (str(字段,6) ,' ', 0) 例:REPLACE (str('123',6),' ', '0')-->000123
--------其中STR()函数是将数字数据转为字符数据

Str--在字段左侧用空格填充使得长度为6,结果为[   123]

REPLACE--将空格转换为0[   123]-->[000123]

用sql导入Excel数据导入文件如.xlsx、xls、csv文件--详情点击链接
TIMESTAMP类型数据插入及类型转换TIMESTAMP类型数据插入及类型转换
字符串左边截取left(name,4)截取左边的4个字符
字符串右边截取right(name,2)截取右边的2个字符
字符串中间截取1SUBSTRING(name,5,3) 截取name这个字段 从第五个字符开始 只截取之后的3个字符
字符串中间截取2SUBSTRING(name,3) 截取name这个字段 从第三个字符开始,之后的所有个字符
特定字符的位置

charindex()函数来返回特殊字符出现的位置

select charindex('56','123456') --56在后面字段出现的位置:结果为5

特定字符串左边截取

select substring(people,0,charindex('$',people)) from tablename;

语句功能:获取美元符号 $之前的值(截取字符串0到$位置的部分)
substring解释:第一个参数表示被截取的字符串,
第二个参数表示要在第一个参数中开始截取的位置,
第三个参数表示要截取的长度。

特定字符串右边截取

select substring(people,charindex('$',people),len(people)) from tablename;

与上同理,不过需要知道字符串最后长度:SQLServer:len();MySql、Orace:length()

次方 POWER(2,3) 2的3次方
俩字符串值相等输出nullselect NULLIF (20,20) --> 结果null ( 如果两个表达式相等,NULLIF 返回空值NULL)

将20220228格式日期转换为

2022-02-28格式

convert(datetime,convert(nvarchar(8),20220228))

将2022-02-28格式的当前日期转换为20220228格式

convert(varchar,getdate(),112)
俩个日期差值DATEDIFF(日期差值单位(day/week/mouth/year),起始日期,终止日期)
数值类型日期的差值DATEDIFF(day,convert(datetime,convert(nvarchar(8),20220228)), convert(datetime,convert(nvarchar(8),20220331)))
 
----其他类型语句------------------------------------------------------------------------------------------------------------------------
修改数据类型ALTER TABLE table_name
ALTER COLUMN 修改字段  修改后数据类型
UPDATE多表联查UPDATE Tab1 SET a.Name = b.Name FROM Tab1 a,Tab2 b WHERE a.ID = b.ID
LOOP简单循环下方详细
Excel设置格式后必须双击才生效问题菜单栏:数据--分列--分隔符--下一步--Tab键--常规--完成
用excel生成insert语句=CONCATENATE("INSERT INTO TABLENAME(UserId,UserName,UserPwd) VALUES('"&A2&"','"&B2&"','"&C2&"')")
查看SqlServer数据库信息SELECT CONNECTIONPROPERTY('local_net_address') AS 服务端IP地址,
       CONNECTIONPROPERTY('local_tcp_port') AS 服务端口,
       CONNECTIONPROPERTY('client_net_address') AS 客户端IP地址,
       @@SERVERNAME AS 主机名,
       HOST_NAME() AS 主机名
截断字段为新数据

drop table #tmp
select '20221213疑似发生大额赎回,处理基金净值异常涨跌幅,20200217疑似发生大额赎回,处理基金净值异常涨跌幅,20200224疑似发生大额赎回,处理基金净值异常涨跌幅,20200827疑似发生大额赎回,处理基金净值异常涨跌幅' f_mark into #tmp

select *,  SUBSTRING(f_mark,number,CHARINDEX(',' COLLATE Chinese_PRC_CI_AS_WS,f_mark+',',number)-number)
from #tmp a   ,master..spt_values  
where  type='p' and number >= 1 and number < len(a.f_mark)
and SUBSTRING(','+a.f_mark,number,1)=',' COLLATE Chinese_PRC_CI_AS_WS

删除表判断

删除系统表

IF(EXISTS(SELECT 1 FROM SYS.TABLES WHERE NAME='#T_GS_FRPSMX_temp'))
        BEGIN
                drop table #T_GS_FRPSMX_temp;
        end

---删除临时表

IF OBJECT_ID('tempdb.dbo.#ToolDate') IS NOT NULL 
    DROP tABLE #ToolDate

LOOP简单循环

语法:

LOOP

要执行的语句;

EXIT WHEN<条件语句>--条件满足,退出循环语句

END LOOP;

例子:

DECLARE M NUMBER :=1;
BEGIN
    LOOP
        M :=M+1;
            DBMS_OUTPUT.PUT_LINE ('M的当前值为:'||M);
        EXIT WHEN M =10;
    END LOOP;
END;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值