`

写sql时经常会碰到条件不定的情况,这样的技巧受用无限

 
阅读更多
写sql时经常会碰到条件不定的情况,好多兄弟都是在哪儿无穷的拼接字符串,我也这样做过,太难弄了,老是搞错,后来用了这样的技巧受用无限:

原来的方法
ALTER procEDURE [dbo].[HollySys_NewsArticles_GetLinks]
(
	 
	@sWhere nvarchar(255) 
)

AS
declare @strYuJu  nvarchar(1000) 
set @strYuJu='SELECT [ID]
      ,[OrganizationID]
      ,[Link]
      ,[LinkTitle]
      ,[CreateDate]
      ,[CreateByUser]
      ,[IsDeleted]
      ,[ModafiedDate]
      ,[ModafiedUser]
      ,[Memo]
     
  FROM [dbo].[HollySys_OrgLink] 
  where  [IsDeleted]=0 '  
  set @strYuJu=@strYuJu+@sWhere
  exec (@strYuJu)


其实最终就是学会OR的妙用
ALTER PROCEDURE [dbo].[HollySys_NewsArticles_GetArticles]
(
	@ModuleId int,
	@CategoryID	int,
	@SpecialID int,
	@PageSize int,
	@CurrentPageIndex int,
	@Passed bit,
	@Hot bit,
	@Elite bit,
	@Pic bit,
	@Categories varchar(1000),
	@SortField varchar(100),
	@SearchCriteria varchar(100),
	@SearchType	tinyint,
	@CreatedByUser varchar(100),
	@Status tinyint,
	@StartDate datetime,
	@EndDate datetime,
	@TotalRecords int output,
	@GroupManage nvarchar(255)---扩展按部门查询
)
AS

-- Set the page bounds
DECLARE @PageLowerBound INT
DECLARE @PageUpperBound INT
IF @CurrentPageIndex = -1
	SET @PageLowerBound = 0
ELSE
	SET @PageLowerBound = @PageSize * @CurrentPageIndex
SET @PageUpperBound = @PageSize - 1 + @PageLowerBound

-- Create a temp table TO store the select results
CREATE TABLE #PageIndexFor_HollySys_NewsArticles_Article
(
     IndexId int IDENTITY (0, 1) NOT NULL,
     ArticleID int
)

IF @CurrentPageIndex = -1 AND @PageSize < 2147483647
	SET ROWCOUNT @PageSize

INSERT INTO #PageIndexFor_HollySys_NewsArticles_Article (ArticleID)

SELECT A.[ArticleID]
FROM dbo.HollySys_NewsArticles_Article A
	INNER JOIN dbo.HollySys_NewsArticles_Category C ON A.CategoryID = C.CategoryID
WHERE C.ModuleId = @ModuleId AND
	(A.Passed = @Passed) AND
	 A.Hot IN(@Hot,0) AND
	 A.Elite IN(@Elite,0) AND	 
	
	((A.DefaultPicUrl <> '' and @Pic =1)or @Pic=0) AND
	
	(CHARINDEX (','+CONVERT(varchar(10),C.CategoryID)+',',','+@Categories+',') > 0) AND
	((A.Title LIKE '%' + @SearchCriteria + '%' AND (@SearchType = 1 OR @SearchType = 2)) OR ((A.Content LIKE '%' + @SearchCriteria + '%' OR A.Summary LIKE '%' + @SearchCriteria + '%' OR A.KeyWords LIKE '%' + @SearchCriteria + '%') AND (@SearchType = 1 OR @SearchType = 4)) OR (A.Author LIKE '%' + @SearchCriteria + '%' AND (@SearchType = 1 OR @SearchType = 3)) OR @SearchCriteria = '') AND
	(A.CreatedByUserID  = @CreatedByUser OR @CreatedByUser = '-1') AND
	(
		(@Status = 0) OR
		((@Status = 1) AND ((A.StartDate <= GETDATE() OR A.StartDate IS NULL) AND (A.EndDate > GETDATE()-1 OR A.EndDate IS NULL))) OR
		((@Status = 2) AND (A.StartDate > GETDATE()) AND (A.StartDate IS NOT NULL)) OR
		((@Status = 3) AND (A.EndDate <= GETDATE()-1) AND (A.EndDate IS NOT NULL))
	) AND
	(@StartDate < A.CreatedDate OR @StartDate IS NULL) AND
	(A.CreatedDate < @EndDate + 1 OR @EndDate IS NULL) AND
	(A.ArticleID IN (SELECT ArticleID FROM [/color]dbo.HollySys_NewsArticles_SpecialArticle WHERE SpecialID = @SpecialID) OR @SpecialID=-1)
ORDER BY

分享到:
评论

相关推荐

    SQL WHERE 条件解析器

    本文将深入探讨`SQL WHERE 条件解析器`这一工具,它在开发列表控件时被广泛使用。 `WHERE`条件解析器的主要功能是将用户输入的复杂`WHERE`条件转换为一个易于操作的结构——条件树。条件树是一种数据结构,它以图形...

    Python使用sql语句对mysql数据库多条件模糊查询.pdf

    Python 使用 SQL 语句对 MySQL 数据库多条件模糊查询 Python 是一种广泛使用的编程语言,而 MySQL 是一种常用的关系型数据库管理系统。在实际应用中,我们经常需要使用 Python 连接 MySQL 数据库,并执行多条件...

    页面传入多个条件——sql语句的拼接

    在进行数据查询时,经常会遇到需要根据不同的业务需求动态地构造SQL语句的情况。这种动态构造通常涉及对SQL语句的部分内容进行拼接或修改,以便更灵活地处理查询条件。 ### 动态SQL语句构建示例分析 #### 文件中的...

    基于jquery js自定义sql条件查询

    用户自己定义动态组织sql查询条件,对于用户来说相当方便的啦。可以自由选择查询字段、条件条件、条件值,选择与或关系,包括括号优先的使用。根据查询字段不同,查询条件值的动态改变,如日期控件、下拉框、可输入...

    数据库SQL操作技巧

    数据库SQL操作技巧是IT行业中必不可少的一项技能,尤其在ORACLE和SQL SERVER这两种广泛使用的数据库管理系统中,掌握高效、精准的SQL语法和优化方法至关重要。本文将深入探讨SQL的基础概念、常用查询语句、数据操作...

    自己写的php 递归无限分类 附有sql文件

    在IT行业中,数据库管理和数据结构的清晰性是至关重要的,特别是在构建网站或应用程序时。"php 递归无限分类"是一种常见的技术,用于处理层级结构数据,如网站导航菜单、组织架构或者产品分类等。本项目提供的资源...

    常用的SQL开发技巧

    SQL开发技巧是数据库管理与应用中的重要组成部分,尤其在企业内部培训中,掌握这些技巧能够显著提高数据库操作的效率和性能。以下是一些常见的SQL开发规范和优化技巧: 1. **利用WHERE子句限制查询结果集**:通过...

    oracle SQL优化技巧

    Oracle SQL 优化技巧 Oracle SQL 优化是提高数据库性能的关键技巧之一。以下是 Oracle SQL 优化的 12 个技巧: 1. 选择最有效率的表名顺序 在基于规则的优化器中,Oracle 的解析器按照从右到左的顺序处理 FROM ...

    SQL代码注入详解和防范技巧

    ### SQL代码注入详解与防范技巧 #### 一、SQL注入的基本概念 SQL注入是一种常见的攻击方式,通过在应用程序中插入恶意SQL代码来控制后端数据库服务器执行非授权操作。随着B/S模式应用的广泛发展,程序员的技术水平...

    WEB界面编辑任意SQL条件组合

    标题中的“WEB界面编辑任意SQL条件组合”是指在Web应用程序中,用户可以通过图形化界面自定义和构建SQL查询语句,结合不同的条件进行数据检索。这一功能通常用于数据分析、报表生成或者后台管理等场景,使得非程序员...

    Excel数据库SQL多条件查询.

    总的来说,结合Excel和SQL,我们可以高效地管理和查询大型数据集,尤其在涉及多条件过滤时,SQL的强大功能尤为突出。在实际工作中,了解如何在Excel中使用SQL查询技巧,对于提升数据分析效率至关重要。

    java操作mysql数据库,不写sql语句版

    然而,为了提高代码的可维护性和安全性,开发者可以选择使用ORM(对象关系映射)框架,如Hibernate或MyBatis,它们允许我们在不直接编写SQL语句的情况下操作数据库。在这个"java操作mysql数据库,不写sql语句版"的...

    WINCC读写SQL数据库的例子

    在WinCC中,我们通常会创建一个变量绑定到VBScript脚本中的变量,这样就可以通过WinCC图形界面触发读写操作。例如,你可以创建一个按钮,在点击按钮时运行VBScript脚本。 为了确保数据交互的安全和效率,应考虑以下...

    Sql server 存儲過程技巧

    ### SQL Server 存储过程技巧详解 #### 一、使用 OUTPUT 类型参数的存储过程技巧 在 SQL Server 中,存储过程通常用于执行一系列 SQL 命令并返回结果集。然而,有时候我们只需要获取存储过程返回的一些特定参数值...

    OA流程节点操作组条件SQL

    泛微OA流程操作组中条件sql查询,查询流程中所有设置过的条件:(字段名包括:流程名称 节点名称 类型名称 协办人条件 批次);

    python 读写sqlserver image字段

    python 通过adodbapi读写sqlserver image字段类型。

    wincc中使用VBS脚本读写SQLServer数据库文件

    wincc中使用VBS脚本读写SQLServer数据库文件

    SQL2000应用技巧(学习SQL的绝佳实践技巧)

    从实践中总结的SQL应用技巧,将近80页的内容,让你收获满满,值得一读......

    解决python 执行sql语句时所传参数含有单引号的问题

    在Python编程中,当我们需要执行SQL语句时,有时会遇到参数中包含单引号(')的情况,这可能导致SQL语法错误。在描述的问题中,作者在尝试插入数据到`teacher`表时遇到了编程错误,因为`t_info`字段的值`result2`...

Global site tag (gtag.js) - Google Analytics