常用SQL语句
0.GUID去除横线和变换为小写1
SELECT  LOWER(REPLACE(LTRIM(NEWID()),'-',''))
1.IDENTITY 函数说明1
2IDENTITY ( data_type [ , seed , increment ] ) AS column_name
IDENTITY(numric,1,1)
2.将数据库的日志文件压缩1
2
3ALTER DATABASE [DBName] SET RECOVERY SIMPLE  
ALTER DATABASE [DBName] SET RECOVERY FULL  
DBCC SHRINKDATABASE([DBName], 0)
3.查询数据1
2
3
4
select A.[合同号],A.[工程名],  Replace(B.设备型号,char(10),'@') as 设备型号 , Replace(B.[设备名称],',','@') as 设备名称  FROM  [dbo].[工程清单$] A 
LEFT JOIN [dbo].[CI_商务产品数据表] B ON A.[合同号]=B.[订货记录合同号]
where ([设备型号] like'%曙光%' OR [设备型号] LIKE '%ThinkVision%' OR [设备型号] LIKE '%戴尔%' OR [设备型号] LIKE '%DELL%') AND [设备名称] not like '%打印机%'
4.判断字符串最后一位是否为字母1
2
3
4SELECT [订货记录号] AS ContractNum,[工程名称] as ProjectName,
[更改内容] AS ChangeContent,[商务下发时间] AS CICompleteTime 
FROM [dbo].[CI_订货记录] WHERE  UPPER(RIGHT([订货记录号],1))>='A' AND  UPPER(RIGHT([订货记录号],1))<='Z'
AND [订货记录号] LIKE 'SZ%' ORDER BY [订货记录号] DESC
5.跨服务器查询数据1
select * from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)
6.SQL Server暂停数据连接1
2ALTER DATABASE [TbBSystem] SET OFFLINE WITH ROLLBACK IMMEDIATE 
ALTER DATABASE [TbBSystem] SET ONLINE
7.逗号分隔函数
XQuery方法1
2
3
4
5
6
7
8
9
10CREATE function [dbo].[func_splitid]
(@str varchar(max),@split varchar(10))
RETURNS @t Table (colname VARCHAR(200))
AS
BEGIN
    DECLARE @x XML
    SET @x = CONVERT(XML,'<items><item id="' + REPLACE(@str, @split, '"/><item id="') + '"/></items>')
    INSERT INTO @t SELECT x.item.value('@id[1]', 'VARCHAR(50)') FROM @x.nodes('//items/item') AS x(item)
    RETURN 
END
通过charindex和substring。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23create function func_splitstring
(@str nvarchar(max),@split varchar(10))
returns @t Table (c1 varchar(100))
as
begin
    declare @i int
    declare @s int
    set @i=1
    set @s=1
    while(@i>0)
    begin    
        set @i=charindex(@split,@str,@s)
        if(@i>0)
        begin
            insert @t(c1) values(substring(@str,@s,@i-@s))
        end   
        else begin
            insert @t(c1) values(substring(@str,@s,len(@str)-@s+1))
        end
        set @s = @i + 1   
    end
    return
end
8.CTE表达式简单使用1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20declare @num int
SET @num=3
WHILE @num>0
begin 
    declare @userids varchar(200)
    declare @nowtime datetime
    DECLARE @USERID VARCHAR(20) 
    set @nowtime=GETDATE()
    set  @userids= (select TOP 1 UserIds from [dbo].[Sys_RoleInfo] WHERE RoleId=@num );
    WITH USERIDS AS
    (
        select * from SRApp.dbo.func_splitid(@userids,',') 
    )
 
    SELECT colname as EmpAccount,@num as RoleId,@nowtime as UpdateTime,'fupeng' as Oper INTO ##TEMP_TABLE  from USERIDS
    insert into [dbo].[Sys_RL_RoleInfo](EmpAccount,RoleId,UpdateTime,Oper) 
    SELECT  EmpAccount,@num as RoleId,@nowtime as UpdateTime,'fupeng' as Oper from ##TEMP_TABLE
    DROP TABLE ##TEMP_TABLE
    set @num=@num-1
end