sql语法积累——不定时更新

这篇具有很好参考价值的文章主要介绍了sql语法积累——不定时更新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.给空字段赋值

SELECT ISNULL(column ,'无名') FROM table
coalesce(靓号等级,'无号')

2.取当月月初的时间

select convert(varchar,dateadd(day,-day(getdate())+1,getdate()),112) 

3.取当月月末时间

select convert(varchar,dateadd(day,-day(getdate()),dateadd(month,1,getdate())),112) 

4.取当前月份的天数

select datediff(day,dateadd(day,-day(getdate()),getdate()),dateadd(day,-day(getdate()),dateadd(month,1,getdate()))) 

5.取上个月最后一天

SELECT CONVERT(int,convert(varchar(10),dateadd(d,-1,dateadd(m,-1,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))),112))

6.取上个月第一天

select CONVERT(int, CONVERT(varchar(10),DATEADD(m,-1 ,dateadd(dd,-day(getdate())+1,getdate())) ,112))

7.查询当天:   

select * from info where DateDiff(dd,datetime,getdate())=0   

8.查询重复字段的数量

select name from emp group by name having count(*)>1

9.去重

 SELECT Distinct列名称 FROM 表名称

10.sql分组取第一条数据的一个方法:

select * from 
(
select row_number() over(partition by ID order by ID) as rownum , *
from table
) as temp
where temp.rownum = 1

11.sql server 查询字段不为null的所有数据

select * from table where column is not null 

12.创建临时表

select*into 目标表名 from(创建源表) as t

13.系统当前月份-2

DATEDIFF(month,办理时间,GETDATE())=2

14.取分组后的第一条整行数据

select * from 

(
select  
a.住房单元编号,a.号码,a.近三月月均消费,row_number() over(partition by a.住房单元编号 order by a.近三月月均消费 desc) as rn
from a 
) as a where rn<=1 

15.取两个时间段之间

between... and ...

16.多ID判断重复个数

select a.ID,a.name,count(*) as tasks from test1 as a,test2 as b
where CHARINDEX(cast(a.ID as nvarchar),B.tID)>0
group by a.ID,a.name
order by a.ID

 判断是否存在

charindex 

17.拆分字符串

 select a.value from  string_split('1,2,3',',')  a

18.新增列

alter table 表名 add 字段名 varchar(255)

19.算百分比

convert(varchar,Convert(decimal(18,2),tab1.A月净增/(A月净增+B月净增+C月净增)*100))+'%' as 新占

20.计算排名

RANK() OVER( ORDER BY Convert(decimal(18,2),((tab1.A月净增/(A月净增+B月净增+C月净增)*100)-(tab1.上月新占))) desc) 排名01

21.30天内的数据

DATEDIFF(dd,[时间],GETDATE())<=30

22.遇到以零做除数的错误

set ansi_warnings off
SET ARITHABORT off
SET ARITHIGNORE on

23.with ties 查出这一条的所有记录

select top(5) with ties 时间 from 表  group by 时间 order by 时间 desc

24.截取数字末尾带英文的字符

left(带宽,CHARINDEX('M',带宽)-1)


25.截取小数4位 不四舍五入

select substring(cast(1*1.0/3 as varchar),1,4)

26.除法  保留两位小数  四舍五入

round(cast(b1.宽带5月数量 as float)/31,2)

27.比较两个日期(datetime)的年月相差多少个月

DATEDIFF() 函数返回两个日期之间的时间
DATEDIFF(mm,startdate,enddate)

28.截取时间格式的年月日

substring(convert(varchar(102),create_date,23),1,7)

29.取一行数字的最大值

select Guid,(select Max(NewDate) from (values (Date1),(Date2),(Date3)) as #temp(NewDate)) as MaxDate from Demo
select Guid, max(NewDate) as MaxDate from Demo unpivot (NewDate for DateVal in (Date1,Date2,Date3)) as u group by Guid

30.根据姓名排序

select * from table order by name collate Chinese_PRC_CS_AS_KS_WS 

31.分组取前5个号码

SELECT *
FROM (
  SELECT *,
    ROW_NUMBER() OVER (PARTITION BY group_column ORDER BY sort_column DESC) AS row_num
  FROM your_table
) AS t
WHERE t.row_num <= 5

32.查询触发器

select * from sysobjects where xtype='TR'

33.查询数据库的所有索引、主外键信息

 select  a.name as tabname,a.object_id
    ,h.name as indexName,h.index_id,ic.column_id,c.name colName
    from  sys.objects    as  a
    right join sys.indexes  as h  on  a.object_id=h.object_id
    left join sys.index_columns ic on h.index_id=ic.index_id and ic.object_id=a.object_id
    left join sys.columns c on ic.column_id=c.column_id and c.object_id=a.object_id
    where  a.type<>'s' and a.type='U'
    --and isnull(h.name,'')='' --查看没有索引的表
    and a.is_ms_shipped<>1 --排除 dtproperties

34.建立索引

create unique index 索引名称 on table(编号)

35.视图简单例子

create view 视图_获取名称
as
select 名称 from 表


select * from 视图_获取名称



36.触发器简单例子

--对表进行插入或者更新操作,当价格不大于0时,触发器将激活,中止该操作并提示“价格不能小于等于0!”

create trigger 触发器价格限制 on 表
for insert,update
as
begin
if exists(select*from 表
where 价格<=0)
begin
print'价格不能小于等于0!'
rollback transaction
end
else
begin
print'插入或者更新成功!'
end
end

37.游标遍历循环

DECLARE @variable datatype --声明一个游标变量
DECLARE cursor_name CURSOR FOR
SELECT ...
FROM ...
WHERE ...  --选择需要遍历的数据集

OPEN cursor_name  --打开游标
FETCH NEXT FROM cursor_name INTO @variable  --读取第一行数据

WHILE @@FETCH_STATUS = 0
BEGIN
  --对每一行遍历执行相应的操作
  ...
  
  FETCH NEXT FROM cursor_name INTO @variable  --读取下一行数据
END

CLOSE cursor_name  --关闭游标
DEALLOCATE cursor_name  --释放游标所占用的资源

38.删除表中的列

ALTER TABLE 表名 DROP COLUMN 列名;

39.sqlserver group by有空值时 给空值设置默认的值

SELECT COALESCE(字段名, '默认值') AS column_name, COUNT(*) AS count
FROM table名
GROUP BY COALESCE(段, '默认值')

40.去掉首尾空格 

select ltrim(rtrim(' test '));

  ltrim 去掉字符串开头的空格

  rtrim 去掉字符串结尾处的空格

41.去掉中间空格

 select replace('s sss',' ','')

42.

-- 创建SQL Server登陆帐户

create login [test] with password='123456', default_database=[AccountingSystem] ;

--创建数据库用户

create user [test] for login [test] with default_schema=dbo

-- 授予用户所有权限

exec sp_addrolemember 'db_owner', 'test'

43.查看表字段的类型

SELECT name AS column_name , TYPE_NAME(system_type_id) AS column_type  FROM sys.columns WHERE object_id = OBJECT_ID(N'表名')
select a.name, b.name, c.name
from sysobjects a inner join syscolumns b
on a.id=b.id and a.xtype='U'
inner join systypes c
on b.xtype=c.xusertype
where a.name='表名'and b.name='字段名'

 

44.修改表名
 文章来源地址https://www.toymoban.com/news/detail-513220.html

EXEC sp_rename '旧表名', '新表名';

到了这里,关于sql语法积累——不定时更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用

    SQL DELETE 语句用于删除表中的现有记录。 注意 :在删除表中的记录时要小心!请注意DELETE语句中的WHERE子句。WHERE子句指定应删除哪些记录。如果省略WHERE子句,将会删除表中的所有记录! 以下是示例中使用的 Customers 表的一部分: CustomerID CustomerName ContactName Address City Postal

    2024年02月05日
    浏览(69)
  • C语言 语法积累

    参考博文: c语言中int默认是有符号还是无符号,C语言迷题:有符号数与无符号数的问题_旋斡勃人的博客-CSDN博客 前些天偶然看到了一个收集C语言迷题的网站,很是感兴趣。本人对C/C++语言本身很是感兴趣,曾经做过几年相应的开发,也算是相对比较熟悉的了,但也被其中的

    2024年02月10日
    浏览(27)
  • C#窗体程序连接SQL Server数据库实现账号登录、账号注册、修改密码、账号注销和实名认证(不定时更新)

    这是本人用Visual Studio2019做的一个C#窗体登录程序,如标题所示,它包含了账号登录、注册账号、修改密码、注销账号和实名认证五个功能。对于有一定基础知识的小伙伴来说,应该不算太难,里面有注释说明,可能咋一看感觉代码运行的逻辑有点乱,不过没关系,相信对你会

    2024年02月02日
    浏览(56)
  • C 知识积累 回车与换行 Linux C 语法分析

    一.知其然 n是换行,英文是New line r是回车,英文是Carriage return 二.知其所以然 机械打字机有回车和换行两个键作用分别是: 换行就是把滚筒卷一格,不改变水平位置。 回车就是把水平位置复位,不卷动滚筒。 Enter = 回车+换行(rn) 注:rn连用时, 不能调换顺序 unix换行:n(0

    2024年02月17日
    浏览(53)
  • mysql group by 字段 与 select 字段

    表数据如下: 执行SQL语句1: SELECT * FROM `z_course` GROUP BY NAME,SEX  结果:   执行SQL语句2: SELECT * FROM `z_course` GROUP BY NAME    sql 1 根据 name,sex 两个字段分组,查询 所有字段,返回结果 sql 2 根据 name 字段分组,查询所有字段,返回结果 sql2 和 sql1 的区别是 分组少了 sex字段,那

    2024年02月10日
    浏览(33)
  • Elasticsearch给索引添加新字段并赋值(API方式)

    结果: 当前的user索引具有name、age、sex三个字段 给索引user添加class字段 添加完成后再次查看索引结构: 结果: 可以看到结构中已经有了class字段了 结果: 因为class字段在没有数据,所以自动过滤掉了不显示; 用法1 再次查看索引user数据,结果: 可以看到现在的class字段数

    2024年02月11日
    浏览(27)
  • Verilog语法(三)——赋值语句

    在 Verilog 中,阻塞赋值、非阻塞赋值和连续赋值是用于赋值操作的不同语法。它们之间的区别主要在于赋值时机和对后续代码执行的影响。 阻塞赋值使用等号 = 进行赋值,它的作用是在当前时钟周期内立即更新目标变量的值,然后继续执行下一条语句。因为它会阻塞后续语句

    2024年02月06日
    浏览(48)
  • oracle批量导出字段注释,并且相同字段注释为空的情况取有数据的第一行赋值

    SELECT ‘comment on column ‘|| t.table_name||’.’||t.colUMN_NAME||’ is ’ || ‘’‘’ || (CASE WHEN T1.COMMENTS IS NULL THEN (SELECT T2.COMMENTS FROM User_Col_Comments T2 WHERE T1.colUMN_NAME=T2.colUMN_NAME AND T2.COMMENTS IS NOT NULL and rownum=1) ELSE NULL END) ||‘’‘’|| ‘;’ FROM User_Tab_Cols t, User_Col_Comments t1 WHERE t.table_n

    2024年02月10日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包