月度归档:2018年07月

mssql sqlserver 中 where 1=1 where 1=0的应用场景


摘要:
下文将讲述 where 1=1 where 1=0的应用场景


where 1=1 永远为真
where 1=0 永远为假
下文将讲述where 1=1 where 1=0的应用场景

1.当我们使用字符串拼接sql脚本时,
declare @sql =’select * from tableName where 1=1 ‘
当在字符串后面使用where 1=1后,如果有查询条件需使用时,直接加入相应的条件就可以
if @ziDuan !=”
begin
set @sql = @sql +’ and ziduan=’+@ziduan
end

2. where 1=0 的应用场景
快速创建或返回表结构,无需数据时
select * from tableName where 1=0

select *into newTableName from tableName where 1=0

mssql sqlserver 检索errorlog的方法分享


摘要:
下文将分享检索errorlog日志的方法


实现思路:
将errorlog读取,并存入至指定物理表,然后对物理表进行select 查询检索,找出我们所需的信息,如下所示:

     CREATE TABLE #tmp_errorlog  (
       writeDate DATETIME
     , ProcessInfo VARCHAR(256)
     ,MessageText VARCHAR(max)
    )
GO
INSERT #tmp_errorlog  
EXEC sp_readerrorlog
GO
SELECT e.writeDate
    ,e.ProcessInfo
    ,e.MessageText
FROM #tmp_errorlog e
WHERE (
        e.MessageText LIKE 'DBCC CHECKTABLE%'
        AND e.MessageText LIKE 'DBCC CHECKDB%'
        AND e.MessageText LIKE '%found%'
        AND e.MessageText LIKE '%errors%'
        AND e.MessageText NOT LIKE '%found 0 errors%'
        )
 
DROP TABLE #tmp_errorlog
  

mssql sqlserver 视图中使用order by 的方法简介


摘要:
今天在视图编写中,在表连接后面加入order by 后,运行视图,提示
“除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。”
下文将讲述一种变相的实现视图中使用order by ,通过此方法可以使视图支持order by 关键字,打破视图中不可使用order by关键字的传说,如下所示:
实验环境:sqlserver 2008 R2


--例:
    create table test(keyId int identity, info varchar(20))
   go
   insert into test(info)values('a'),('b'),('c'),('d')
 go 
  create view vw_test 
  as 
   select * from test order by keyId desc  
  go
  select * from vw_test
 --当运行此视图时,出现以下错误信息
 --- "除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。"
 --此时我们需要使用top关键字 指定视图显示行的方法,使视图支持order by,如下
 ---使用 top 100 percent 返回前百分之百行数据
 alter view vw_test 
 as 
   select top 100 percent * test order by keyId desc  
 go 
   select * from vw_test ---一切运行正常,视图中的数据也是按照指定的排序方式进行排序
go
  
  drop view vw_test 
  truncate table  test 
  drop table test