`

SQLServer 存储过程中不拼接SQL字符串实现多条件查询

 
阅读更多

最近在工作中要使用存储过程,因为前端页面传过来的下拉菜单的值不固定,数据是这样的,0是全部,1是男,2是女,当选择全部时,要能查询出所有的用户,否则只能查询出来男的用户或者女的用户,一般都是在存储过程中写

declare @sql nvarchar(500), @str nvarchar(20)

set@str = 'and sex = 1'

set @sql = 'select * from 表 where id >0 '+ @str

exec sp_executesql@sql 或者 exec(@sql)

后来看了一篇博客发现还有另一种写法

下面是 不采用拼接SQL字符串实现多条件查询的解决方案
  第一种写法是感觉代码有些冗余
  if (@addDate is not null) and (@name <> '')
   select * from table where addDate = @addDate and name = @name
  else if (@addDate is not null) and (@name ='')
   select * from table where addDate = @addDate
  else if(@addDate is null) and (@name <> '')
   select * from table where and name = @name
  else if(@addDate is null) and (@name = '')
  select * from table
  第二种写法是
  select * from table where (addDate = @addDate or @addDate is null) and (name = @name or @name = '')
  第三种写法是
  SELECT * FROM table where
  addDate = CASE @addDate IS NULL THEN addDate ELSE @addDate END,
  name = CASE @name WHEN '' THEN name ELSE @name END

 

引用博客地址:http://uule.iteye.com/blog/1988137

 

分享到:
评论

相关推荐

    sql server拼接字符串和拼接一列的值

    sql server拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。

    SQL Server 将某一列的值拼接成字符串.docx

    在SQL Server中,将某一列的值拼接成字符串是一个常见的需求,这通常涉及到数据的格式化输出,比如创建报告或者导出数据。这个过程可以通过几种不同的方法来实现,其中包括使用FOR XML PATH子句和CONCAT函数。我们将...

    SqlServer存储过程实现及拼接sql的注意点

    在本文中,我们将深入探讨如何在SQL Server中创建存储过程以及在拼接SQL语句时需要注意的关键点。 首先,让我们看一个简单的SQL更新语句: ```sql update table1 set field1=value1, field2 = value2 where id = id...

    存储过程拼接字符串

    当我们需要在存储过程中拼接字符串时,通常是为了解决动态SQL构造或者生成报告等需求。在本文中,我们将深入探讨如何在SQL中进行字符串拼接。 一、SQL Server中的字符串拼接 1. 使用`+`运算符 在SQL Server中,最...

    sqlserver的存储过程与 where in 多值参数

    **方法一:拼接SQL字符串并调用`EXEC`** 这是最简单也是最直观的方法。你可以在存储过程中接收一个包含多个值的参数,如一个字符串,然后动态拼接`DELETE`或`SELECT`等SQL语句。例如: ```sql CREATE PROCEDURE ...

    sqlserver字符串分隔与拼接实例[归类].pdf

    本文将为读者详细讲解 SQL Server 中字符串分隔与拼接的实例,包括创建函数、使用字符串函数 CHARINDEX 和 STUFF 等知识点。 字符串分隔与拼接实例 在实际应用中,我们经常需要将多个字符串连接起来,或者将一个...

    sql 多行合并某一列字符串拼接的示例

    ### SQL字符串拼接的原理 在SQL中,字符串拼接是指将多个字符串值连接成一个单一的字符串。不同的数据库系统提供了不同的函数或操作符来实现这一功能。例如,在SQL Server中,可以使用`+`操作符或`CONCAT()`函数;...

    SQLServer逗号分隔的字符串转换成表

    SQL Server 逗号分隔的字符串转换成表是指将一个逗号分隔的字符串转换成一个表结构,以便于进行查询、更新或者删除等操作。下面是将逗号分隔的字符串转换成表的步骤: 1. 创建一个临时表:首先,需要创建一个临时表...

    SQLServer 2000存储过程手册

    10. **动态SQL**:在存储过程中,可以使用字符串拼接生成动态SQL语句,然后通过sp_executesql执行,这种方法在处理灵活的查询需求时非常有用,但要注意防止SQL注入攻击。 11. **存储过程的版本控制**:对于大型项目...

    SQL Server查询中的特殊字符处理(C#代码)

    为了解决上述问题,我们可以编写一个函数,该函数接收一个字符串作为输入,并返回一个经过特殊字符处理后的字符串,使其可以安全地用于SQL查询中。以下是一个示例实现: ```csharp using System.Text; public ...

    在Sql Server 数据库中利用存储过程实现动态交叉表

    在存储过程中,可以通过编写脚本来拼接字符串,形成SQL查询语句,并执行它。动态SQL能够根据条件来改变查询语句的结构,这在处理不固定的列和行时非常有用。 2. **临时表的使用**:在构建动态交叉表时,经常需要...

    Sqlserver 2014 之 自定义字符串聚合函数

    标准的T-SQL提供了一些内置的聚合函数,如SUM、AVG、MAX和MIN,但它们并不支持将多个字符串合并为一个单一的字符串。在描述中提到的“Sqlserver 2014 之 自定义字符串聚合函数”正是针对这个需求而展开的讨论。 在...

    sql分页 sqlserver中存储过程分页

    - **动态SQL构造**:此存储过程通过动态拼接 SQL 字符串的方式来实现复杂的分页逻辑,这使得其具有较高的灵活性。 - **TOP 关键字的使用**:利用 SQL Server 的 TOP 关键字来限制返回的记录数量。 - **子查询与嵌套...

    [sql server]SQL Server2005杂谈(4):在SQL Server2005中按列连接字符串的三种方法.doc

    在SQL Server 2005中,连接字符串是一项常见的任务,尤其在处理包含多个值的列时。在本文中,我们将探讨三种不同的方法来按列连接字符串,这些方法适用于已经存在的表结构,无需进行重大改动。 首先,我们可以考虑...

    SQL Server查询中特殊字符的处理方法

    在SQL Server中,查询语句可能会遇到各种特殊字符,这些字符在...同时,也可以利用参数化查询或存储过程来进一步提高代码的安全性和可维护性,避免直接在查询字符串中拼接变量,从而减少因特殊字符处理不当引发的问题。

    SQL中存储过程中SQL语句的单引号和双引号问题[总结].pdf

    SQL 中存储过程中 SQL 语句的单引号和双引号问题 在 SQL 中,单引号和双引号的问题是一个常见的混淆点,特别是在存储过程中编写 SQL 语句时。下面将对此问题进行详细的解释和总结。 一、单引号和双引号的基本概念 ...

    sql server 2008 将一列值转换成一个字符串

    在SQL Server 2008中,将一列值转换为一个字符串是一个常见的需求,特别是在进行数据汇总或生成报告时。本篇文章将详细介绍如何利用SQL Server 2008中的功能来实现这一需求,并深入探讨背后的原理和技术要点。 ### ...

    SQL SERVER2012中新增函数之字符串函数CONCAT详解

    在SQL Server 2012中,引入了一个新的字符串函数——CONCAT,它的主要功能是方便地连接多个字符串。在CONCAT函数出现之前,我们通常使用 "+" 运算符来连接字符串,但这种方法存在一个问题,即如果其中任何一个字符串...

    SQL Server字符串处理函数大全

    在SQL Server中,字符串处理是数据库管理中必不可少的一部分,它涉及到对文本数据的查询、分析和操作。以下是一些常见的SQL Server字符串处理函数及其详细解释: 1. **字符转换函数** - `ASCII()`:返回字符串中最...

Global site tag (gtag.js) - Google Analytics