`

写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语句--SQL优化技巧

    如何写出高效率的SQL语句--SQL优化技巧 SQL 优化技巧是提高数据库性能的关键所在。编写高效率的 SQL 语句需要对索引的机制有一定了解,以下是关于索引的知识点: 索引的优点和局限 索引可以提高查询的效率,但会...

    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模式应用的广泛发展,程序员的技术水平...

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

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

    Excel数据库SQL多条件查询.

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

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

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

    SQL Server精华技巧集

    在SQL Server精华技巧集中,你将发现一系列关于SQL数据库管理和优化的专业知识,这些技巧对于数据库管理员、开发人员以及任何需要处理SQL数据的人来说都是极其宝贵的。SQL Server是Microsoft公司推出的一款强大的...

    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数据库文件

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

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

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

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

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

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

    几个SQL_Server常用技巧

    几个SQL_Server常用技巧,是SQL初学者的绝佳资料,看看有好处的

Global site tag (gtag.js) - Google Analytics