`

写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`条件转换为一个易于操作的结构——条件树。条件树是一种数据结构,它以图形...

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

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

    SQL技巧全集-整理

    SQL技巧全集是数据库管理员、数据分析师和开发人员的宝贵资源,涵盖了多种实用的查询、操作和优化技术。以下是一些核心的SQL知识点,根据标题和描述进行详细阐述: 1. **SQL操作大全**:SQL操作包括了数据的增...

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

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

    常用的SQL开发技巧

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

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

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

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

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

    WINCC读写SQL数据库的例子

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

    Sql server 存儲過程技巧

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

    python 读写sqlserver image字段

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

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

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

    sql经验总结技巧—非常的实用

    在SQL Server数据库管理中,掌握一些实用的技巧能够显著提升工作效率。以下是一些关于SQL Server的经验总结,涵盖了问题解决、日期处理、数据操作、查询优化等多个方面: 1. **处理挂起的安装操作**:当安装SQL ...

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

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

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

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

    [世恒帮您学易]-SQL多条件查询方法

    在实际应用中,我们常常需要根据多个条件来筛选数据,这就是所谓的多条件查询。在这个主题中,我们将深入探讨如何在SQL中实现多条件查询,特别是在易语言环境下。 首先,让我们了解基本的SQL查询结构。一个简单的...

    ORACLE SQL性能优化技巧

    书写高质量的oracle sql,用表连接替换EXISTS,索引的技巧等等

    SQL 技巧与大全

    SQL(Structured Query Language)是一种用于管理和操作关系数据库的强大工具,无论是初学者还是经验丰富的开发者,都能从中找到适用的技巧和策略。"SQL 技巧与大全"这个资源集合了多种SQL语言的学习材料,旨在帮助...

    SQL 语法 SQL 总结 SQL教程

    SQL 基础 SQL 首页 SQL 简介 SQL 语法 SQL select SQL distinct SQL where SQL AND & OR SQL Order By SQL insert SQL update SQL delete SQL 高级 SQL Top SQL Like SQL 通配符 SQL In SQL Between ...

    一个简单的sql循环语句脚本

    SQL循环语句主要包括WHILE循环和FOR循环,它们允许我们在满足特定条件时重复执行一段代码块。在PL/SQL和T-SQL中,还有BEGIN-END结构来定义代码块。 1. WHILE循环:在满足特定条件时反复执行代码块,直到条件不再...

    SQL SERVER数据导出工具可以根据WHERE条件导出数据

    SQL SERVER数据导出工具SQL SERVER数据导出工具SQL SERVER数据导出工具SQL SERVER数据导出工具SQL SERVER数据导出工具SQL SERVER数据导出工具SQL SERVER数据导出工具

Global site tag (gtag.js) - Google Analytics