博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql server(常用)
阅读量:5905 次
发布时间: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://mrcpx.baihongyu.com/

你可能感兴趣的文章
Hadoop学习笔记系列文章导航
查看>>
SpringMVC中ModelAndView addObject()设置的值jsp取不到的问题
查看>>
Prometheus : 入门
查看>>
使用 PowerShell 创建和修改 ExpressRoute 线路
查看>>
在C#中获取如PHP函数time()一样的时间戳
查看>>
Redis List数据类型
查看>>
大数据项目实践(四)——之Hive配置
查看>>
初学vue2.0-组件-文档理解笔记v1.0
查看>>
上传图片预览
查看>>
lagp,lacp详解
查看>>
LVS之DR模式原理与实践
查看>>
Docker的系统资源限制及验证
查看>>
c++ ios_base register_callback方法使用
查看>>
Java中为什么需要Object类,Object类为什么是所有类的父类
查看>>
angularjs-paste-upload
查看>>
linux基础命令 head
查看>>
objective c:import和include的区别, ""和<>区别
查看>>
The Shared folder with you
查看>>
sax方式解析XML学习笔记
查看>>
Springboot配置(上)
查看>>