不定时更新···
------------------------------------------------------------------------------
汇总
功能 | 语法 |
进位 | 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||'%' |
替换函数 | REPLACE ( string_expression , string_pattern , string_replacement ) 参数: |
将数字数据转为字符数据 | str(float_expression,length,decimal) float_expression:为要转换的数字数据; Length:转换后字符的长度,包括空格\小数点\符号\数字,默认转换后的长度为10;(注意:如果位数不到的话全是空格补充) Decimal:返回的字符数据中包含小数点右边的小数位数,默认为0,取值四舍五入 |
字段前面填充0使得长度为6 | REPLACE (str(字段,6) ,' ', 0) 例:REPLACE (str('123',6),' ', '0')-->000123 Str--在字段左侧用空格填充使得长度为6,结果为[ 123] REPLACE--将空格转换为0[ 123]-->[000123] |
用sql导入Excel数据 | 导入文件如.xlsx、xls、csv文件--详情点击链接 |
TIMESTAMP类型数据插入及类型转换 | TIMESTAMP类型数据插入及类型转换 |
字符串左边截取 | left(name,4)截取左边的4个字符 |
字符串右边截取 | right(name,2)截取右边的2个字符 |
字符串中间截取1 | SUBSTRING(name,5,3) 截取name这个字段 从第五个字符开始 只截取之后的3个字符 |
字符串中间截取2 | SUBSTRING(name,3) 截取name这个字段 从第三个字符开始,之后的所有个字符 |
特定字符的位置 | charindex()函数来返回特殊字符出现的位置 select charindex('56','123456') --56在后面字段出现的位置:结果为5 |
特定字符串左边截取 | select substring(people,0,charindex('$',people)) from tablename; 语句功能:获取美元符号 $之前的值(截取字符串0到$位置的部分) |
特定字符串右边截取 | select substring(people,charindex('$',people),len(people)) from tablename; 与上同理,不过需要知道字符串最后长度:SQLServer:len();MySql、Orace:length() |
次方 | POWER(2,3) 2的3次方 |
俩字符串值相等输出null | select 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 *, SUBSTRING(f_mark,number,CHARINDEX(',' COLLATE Chinese_PRC_CI_AS_WS,f_mark+',',number)-number) |
删除表判断 | 删除系统表 IF(EXISTS(SELECT 1 FROM SYS.TABLES WHERE NAME='#T_GS_FRPSMX_temp')) ---删除临时表 IF OBJECT_ID('tempdb.dbo.#ToolDate') IS NOT NULL |
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;