如何在存储过程中使用like操作符

本文介绍了一个用于查询操作日志的SQL存储过程。该过程可根据用户ID列表、时间范围及日志描述进行筛选,支持模糊匹配,适用于多种查询需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:
要查询数据库中的一个操作日志表,其中要根据日志内容进行筛选,比如要查询所有日志内容中有  添加  字样的记录;

代码:

 1None.gifSET QUOTED_IDENTIFIER ON 
 2None.gifGO
 3None.gifSET ANSI_NULLS OFF 
 4None.gifGO
 5None.gifif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetOperationLogs]'and OBJECTPROPERTY(id, N'IsProcedure'= 1)
 6None.gifdrop procedure [dbo].[GetOperationLogs]
 7None.gifGO
 8None.gif
 9None.gif
10ExpandedBlockStart.gifContractedBlock.gif/**//* 查询Voltage_Dist_Data的存储过程 */
11None.gifcreate procedure GetOperationLogs
12None.gif(
13None.gif    @useridList varchar(500),  
14None.gif  @BeginTime datetime,
15None.gif  @EndTime datetime,
16None.gif  @description varchar(500)
17None.gif)
18None.gifas
19None.gifbegin
20None.gif  declare @s varchar(2000)
21None.gif  set @s='select * from d_lg_6'
22ExpandedBlockStart.gifContractedBlock.gif  /**//* 如果没有设置任何查询条件,在返回所有的operationlogs */
23None.gif  if ((@useridList=null)and(@BeginTime=null)and(@EndTime=null)and(@Description=null))
24None.gif  begin
25None.gif      exec(@s)
26None.gif      return
27None.gif  end      
28None.gif  set @s=@s+' where '
29ExpandedBlockStart.gifContractedBlock.gif  /**//*如果设置了useridList,则返回这些用户的OperationLogs */
30None.gif  if (@useridList!=null)
31None.gif      set @s=@s+' userid in ('+@useridList+') and '
32ExpandedBlockStart.gifContractedBlock.gif  /**//*如果设置了查询时间,则返回该时间那的查询时间*/
33None.gif  if ((@BeginTime!=null)and(@EndTime!=null))
34None.gif      set @s=@s+' logtime between '''+convert(varchar(19),@BeginTime,120)+''' and '''+convert(varchar(19),@endtime,120)+''' and '
35ExpandedBlockStart.gifContractedBlock.gif  /**//*如果设置了日志内容过滤器,则过滤日志内容 */
36None.gif  if (@Description!=null)
37None.gif      set @s=@s+' Description like ''%'+@Description+'%'''
38None.gif  if (substring(@s,len(@s)-2,3)='and')
39None.gif      set @s=substring(@s,0,len(@s)-3)
40None.gif  exec(@s)
41None.gif  --select @s
42None.gif  --select substring(@s,len(@s)-2,3)
43None.gifend
44None.gifGO
45None.gifSET QUOTED_IDENTIFIER OFF 
46None.gifGO
47None.gifSET ANSI_NULLS ON 
48None.gifGO

这里的关键还是 两个单眼号的连续使用,注意观察
1None.gifif (@Description!=null)
2None.gif      set @s=@s+' Description like ''%'+@Description+'%'''
这里%旁边的是两个单眼号,而不是双眼号;
注意了这点就ok了,其他的没什么好说的;
祝你成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值