常用Sql

1、case 函数:

--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END

备注:简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。

2、.Net中调用存储过程:
CommandText等于存储过程名, 参数通过SqlParameter传入;CommandType等于CommandType.StoredProcedure
判断存储过程是否存在:
exists (select * from sys.objects where type='P' and name='SelectStudent')

3、声明变量:
declare @name varchar(20) ,age int;
4、变量赋值:
set @name='lxf'
set @age=30 貌似不支持一次给多个变量赋值: set @name='lxf',@age=25 报错
但下面这中是可以的

declare @nn varchar(20),@cc int
select @nn=name , @cc=age
from student where ID=1
select @nn 姓名 ,@cc 年龄

4、

MERGE 目标表

USING 源表

ON 匹配条件

WHEN MATCHED THEN

   语句

WHEN NOT MATCHED THEN

   语句;

详见:http://www.cnblogs.com/xfrog/archive/2010/10/13/1850602.html

5.exec(或execute)用法:

最常用法,就是用来调用存储过程: exec procName 参数列表

还有种用法:执行动态sql,如

DECLARE @ss NVARCHAR(max)
DECLARE @idd VARCHAR(10)
SET @idd=12
SET @ss=N'select * from student where id='+ @idd
EXEC (@ss )

(备注:sql中可以有变量 但使用变量值时必须通过拼接sql)

还有种执行动态sql的方法是调用系统存储过程:sp_executesql

declare @sql nvarchar(2000) 
declare @cou int 
declare @id varchar(20) 
set @id='1' 
set @sql='select @count=count(*) from emp where id=@id' 
exec sp_executesql @sql, N'@count int out,@id varchar(20)', @cou out 
,@id 
print @cou 

注意: 
1.sp_executesql要求动态Sql和动态Sql参数列表必须是Nvarchar,比如上个例子的@sql,N'@count int out,@id varchar(20)'我记得在sql2005中Varchar也可以的,但是我打了Sp3补丁后就不行了,必须为Nvarchar 
2.动态Sql的参数列表与外部提供值的参数列表顺序必需一致,如: 
N'@count int out,@id varchar(20)', @cou out,@id 
@count 对应 @cou,@id对应@id 
如果不一致,必须显式标明,如: 
N'@count int out,@id varchar(20)', @id=@id, @count=@cou out 
3.动态SQl的参数列表与外部提供参数的参数列表参数名可以同名

6、获取当前时间的日期部分:

SELECT CONVERT(VARCHAR(10),GETDATE(),120 )

其它格式详见http://www.w3school.com.cn/sql/func_convert.asp

7、   SELECT @@RowCount

返回上一执行的sql语句所影响的行数或查询的条数。

8、CHARINDEX ( expression1 , expression2 [ , start_location ] ) 

expression1 要找的字符(串)  , expression2 查下目标对象,start_location 是 CHARINDEX 函数开始在 expression2 中找expression1 的位置。

 找到返回索引  从1开始  未找到返回0.、

9、CAST (expression AS data_type)  将变量expression  转换为指定类型

10、日期相加减:SQL Server 日期的加减函数: DATEDIFF DATEADD

11、获取当月第一天和最后一天的日期

declare @Now DATEtime ;
DECLARE @FirstDayOfThisMonth DATE
declare @LastDayOfThisMonth DATE
SET @Now = GETDATE()
SET @FirstDayOfThisMonth = @Now - day(@Now) + 1
SET @LastDayOfThisMonth = DATEADD(MONTH,1,@Now-Day(@Now)+1) - 1

SELECT @Now
select @FirstDayOfThisMonth
select @LastDayOfThisMonth

原文地址:https://www.cnblogs.com/lxf1117/p/4473929.html