以前很懒,都是用拼接字符串的方式,加上if 语句,根据输入参数是否为空来判断是否需要在where 后加上对应字段的条件限制
但是拼接字符串很烦,又总是被转义符搞得很烦 ''''
所以想了其他办法
分三种情况(varchar,int,date)都尝试了一下
使用case when 和通配符当主角,而不是'''''''''
不难理解,怕隔天忘记所以记一笔
alter proc sp_testParam
(
@name varchar(50),
@ID int,
@sDate date,
@eDate date
)
as
begin
--懒得要死,老是不乐意去记默认值,所以打印出来望自己长点脑子
print @name+'--name'
print cast(@ID as varchar(50))+'--ID'
print cast(@sDate as varchar(50))+'--sDate'
print cast(@eDate as varchar(50))+'--eDate'
select * from benInfo
where
--varchar,使用'%%'表示包含任何字符串
name like case when @name is null or @name='' then '%%' else '%'+@name+'%' end
--int,使用'[0-9]%'表示包含任何数字,因为该字段是ID,不需要模糊查询,则不需加通配符,完全匹配
and cast(ID as varchar(50)) like case when @ID is null or @ID=0 then '[0-9]%' else cast(@ID as varchar(50)) end
--date,该类型的默认值是'1900-01-01',因此起始日期不用理会,结束日期判断一下,未填则给无限大
and currentDate between @sDate and case when @eDate is null or @eDate='1900-01-01'
then '9999-12-31' else @eDate end
end
--exec sp_testParam '','','','2010-09-03'
至此尝试了一下,在解决简单逻辑时,此方法是可行的
/*
PS.
1.意外发现,当 like 后的字符串里不带有通配符时,其作用等同于等号 =
*/
分享到:
相关推荐
创建存储过程时,需定义输入参数、输出参数、执行的SQL语句以及可选的返回状态值。在创建过程中需要注意遵循命名规则,不能与其他SQL语句混合在同一批处理中,并且只能在当前数据库中创建存储过程。 创建存储过程的...
1. **参数**:包括输入参数和输出参数,用于传递数据到存储过程或从存储过程传出。 2. **操作语句**:定义存储过程执行的具体SQL操作,可能包括对其他存储过程的调用。 3. **状态值**:返回给调用者,表示存储过程...
在SQL Server中,函数的确定性和非确定性是很重要的概念,确定性函数的输出仅取决于输入参数,而非确定性函数可能受环境影响,如GETDATE(),其每次调用可能返回不同的结果。 了解和熟练使用SQL Server的函数是...
SQL SERVER联机丛书中定义存储过程为可接受用户参数并由Transact-SQL语句组成的集合,可以是永久性的、局部临时的或全局临时的。创建存储过程需要熟悉T-SQL语句,以及函数和过程的概念,因为要在应用程序中调用它们...
1. **输入参数**:如示例中的@DepartmentID,只在调用时传递值。 2. **输出参数**:允许存储过程将值返回给调用者。 3. **输入/输出参数**:同时具备输入和输出功能。 六、返回值 存储过程可以使用`RETURN`语句返回...
在SQL Server 2008中,数据安全是至关重要的,因此数据库管理员和开发者经常需要对敏感信息进行加密。本文将详细介绍MSSQL2008中常用的自定义加密函数,包括MD5、SHA和Base64等算法,以及如何在SQL脚本中使用这些...
1. **定义过程头**:指定存储过程的名称、输入参数(如果有的话)和输出参数。例如,在MySQL中,一个简单的过程头可能看起来像这样: ```sql CREATE PROCEDURE ProcName(IN inputParam1 datatype, OUT outputParam...
例如,使用ArcGIS REST API,可以通过URL构建查询请求,其中包含地图服务的地址、查询条件(如SQL表达式)、输出格式等参数。正确解析和展示这些数据是实现地图查询功能的关键步骤。 ### 实践案例 为了更具体地...
当需要更新或修改模型时,用户只需要在VB.NET提供的可视化界面上输入新的参数,系统会自动更新模型并保存至数据库,简化了设计流程。 此外,系统还集成了结构设计、工艺设计和产品数据管理,形成一体化的流程,提升...
1. **统计分组因素参数化**:将统计分组条件转化为可配置的参数,建立一个中间表来存储这些参数。 2. **数据记录统计**:从基础数据表中提取所需数据,依据中间表的字段结构逻辑,将统计数据插入到中间表中,完成...
通过配置这些函数的属性,可以指定数据库连接字符串、SQL查询语句以及所需的输入和输出参数。 在这个测试程序中,可能包含以下关键部分: 1. **数据库连接**:LabView中的“数据库初始化”VI负责建立与SQL服务器的...
此外,SQL注入防护也很重要,确保输入的数据经过参数化查询或存储过程处理。 8. **性能优化**: 为了处理大量投票,可能需要考虑缓存策略,如使用ASP.NET的Cache对象,或引入Redis等分布式缓存。同时,数据库索引...
在 Silverlight 4.0 应用程序中,将 Excel 文件数据上传并插入到 SQL 数据库涉及多个步骤,包括文件选择、...确保在开发过程中遵循最佳实践,如参数化查询以防止 SQL 注入攻击,以及对用户输入进行验证,确保数据质量。
如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); ``` 然后,通过`DriverManager.getConnection()`方法建立数据库连接。参数包括数据库URL、用户名和密码: ```java Connection ...
这些接口允许LabVIEW程序连接到各种类型的数据库,如MySQL、SQL Server、Oracle等。用户输入的小区业主用户名会被作为查询条件,系统会构造SQL语句(如"SELECT * FROM 用户表 WHERE 用户名 = 'input_username'"),...
2. **参数化查询:** 使用预定义查询或其他参数化方法来构建SQL语句,避免直接拼接用户输入。 3. **最小权限原则:** 数据库账户应仅拥有执行必要操作所需的最低权限。 4. **日志记录与监控:** 记录所有异常访问...
用户可以通过界面输入条件,比如时间范围、特定参数值,来查找历史数据。查询结果可能以表格、图表或其他可视化形式展示。 总的来说,"tx.rar_源码" 是一个利用DELPHI进行串口通信,实现地泵监控和数据管理的应用。...
1. **接收输入**:函数首先接收一个或多个输入参数,这些参数可能是MATLAB中的数组、结构体、细胞数组等,代表要转换为XML的数据。 2. **数据预处理**:函数需要将这些非XML数据转换为可被XML表示的形式。例如,...