• 常用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

  • 相关阅读:
    nopcommerce商城系统--文档整理
    浏览器标签页显示图标
    SQL SERVER 查询语句学习:CHARINDEX
    NHibernate3.3.3 学习笔记1
    权限管理UML设计草图
    jquery UI 跟随学习笔记——拖拽(Draggable)
    Unity3d IOS中的IGUI控件
    Unity3d ngui基础教程
    unity3d 幻灯片效果实现
    unity3d 场景间数据传递
  • 原文地址:https://www.cnblogs.com/lxf1117/p/4473929.html
Copyright © 2020-2023  润新知