博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql server(常用)
阅读量:5853 次
发布时间:2019-06-19

本文共 3373 字,大约阅读时间需要 11 分钟。

普通用法

//生成 uuid 并转为小写select LOWER(SUBSTRING(uuid,1,8)+'-'+SUBSTRING(uuid,10,4)+'-'+SUBSTRING(uuid,15,4)+'-'+SUBSTRING(uuid,20,4)+'-'+SUBSTRING(uuid,25,12)) from (select cast(NEWID() as varchar(36)) as uuid) s  //ea52a7bb-a2aa-44b8-be28-5ebc64defcf9//获取时分秒select DateName(hour,GetDate())+ DateName(minute,GetDate())+DateName(second,GetDate()) //143054//1000-9999随机数select floor(9000*RAND()+1000)//日期格式化select GETDATE()                            //2019-02-12 14:30:16.763Select CONVERT(varchar(100), GETDATE(), 8)  //10:57:46Select CONVERT(varchar(100), GETDATE(), 12) //060516Select CONVERT(varchar(100), GETDATE(), 20) //2006-05-16 10:57:47Select CONVERT(varchar(100), GETDATE(), 21) //2006-05-16 10:57:47.157    Select CONVERT(varchar(100), GETDATE(), 23) //2006-05-16Select CONVERT(varchar(100), GETDATE(), 24) //10:57:47Select CONVERT(varchar(100), GETDATE(), 25) //2006-05-16 10:57:47.250Select CONVERT(varchar(100), GETDATE(), 102)//2006.05.16Select CONVERT(varchar(100), GETDATE(), 111)//2006/05/16Select CONVERT(varchar(100), GETDATE(), 112)//20060516

进阶

order by

group by

我们经常会使用group by对查询的结果进行去重,但是在使用的过程中一定要确保 group by 里面要只是有一个唯一性的条件,否则极有可能把需要的条目去重了,导致查询结果异常,而且这个问题排查难度不小

联表查询

SQL查询多列合并一列

select ID,hosID +'/'+ hosCode +'/'+ name as '诊所编号/诊所Code/医生项目'from Doctor where hosCode = 'xxxx'//return: 71bfc474-7725-e8fb-ecbd-a204bbaxxxxx 15xx/A75xxx/宋xx

SQL查询将多行合并成一行()

//将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后用param2替换删掉的字符。stuff(param1, startIndex, length, param2)

param1:一个字符数据表达式。param1可以是常量、变量,也可以是字符列或二进制数据列。

startIndex:一个整数值,指定删除和插入的开始位置。如果 startIndex或 length 为负,则返回空字符串。如果startIndex比param1长,则返回空字符串。startIndex可以是 bigint 类型。
length:一个整数,指定要删除的字符数。如果 length 比param1长,则最多删除到param1 中的最后一个字符。length 可以是 bigint 类型。

例如:

select STUFF('abcdefg',1,0,'1234')       --结果为'1234abcdefg'select STUFF('abcdefg',1,1,'1234')       --结果为'1234bcdefg'select STUFF('abcdefg',2,1,'1234')       --结果为'a1234cdefg'select STUFF('abcdefg',2,2,'1234')       --结果为'a1234defg'

拓展:for xml path,将查询结果集以XML形式展现

现在想把两条数据通过PerworkSampleInfoId和Barcode合并成一条

select ID,PerworkSampleInfoId,Barcode, ApplyItemId,ApplyItemName,ItemPricefrom Perwork_SampleItem where Barcode = 'A75004xxxxxx'

clipboard.png

select PerworkSampleInfoId,Barcode,    (        select STUFF(            (select ',' + ApplyItemName from Perwork_SampleItem where Barcode = a.Barcode for xml path('')),            1,            1,            ''                )    ) as ApplyItemNames,    (        select STUFF (            (select sum(ItemPrice) from Perwork_SampleItem where Barcode = a.Barcode),            1,            0,            ''        )    )as totalItemPricefrom Perwork_SampleItem awhere Barcode = 'A75004xxxxxx'group by PerworkSampleInfoId,Barcode

clipboard.png

视图

存储过程

优点:

   1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

  2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

  3.存储过程可以重复使用,可减少数据库开发人员的工作量

  4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权

缺点:

   1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。

   2.可移植性差

由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。

基本用法:

//创建存储过程use WEHealthgocreate procedure pro_test@_code varchar(50)asIF ( @_code IS NOT NULL )    select *    from Hospital    where Code like '%'+@_code+'%';    ELSE    select *    from Hospital;//调用存储过程exec pro_test '101999';exec pro_test null;

函数

表值函数

标量值函数

转载地址:http://lupjx.baihongyu.com/

你可能感兴趣的文章
基本信息项目目标文档
查看>>
DNN Web Platform 官方汉化版本 5.5
查看>>
移动开发Html 5前端性能优化指南
查看>>
UGUI 分页渐变居中效果
查看>>
silverlight style和template 使用之tip
查看>>
Eclipse配置python环境
查看>>
第十二周总结
查看>>
Import declarations are not supported by current JavaScript version--JavaScript版本不支持导入声明...
查看>>
js兼容性大全
查看>>
晶振不起振的原因及其解决方法
查看>>
学习目标
查看>>
《利用python进行数据分析》学习笔记--数据聚合与分组(groupby)
查看>>
C++中的函数指针模板
查看>>
2015年个人总结
查看>>
C#编程(六)------------枚举
查看>>
高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-2 发布
查看>>
ZOJ 3316 Game 一般图最大匹配带花树
查看>>
《系统架构师》——操作系统和硬件基础
查看>>
如何看待一本图书
查看>>
angularjs1-7,供应商
查看>>