sql - Sybase 搜索查询
问题描述
我正在研究一个 Sybase 存储过程,它采用 4 个可为空的输入参数,并从表中获取数据。
@name varchar(20) = null
@city varchar(20) = null
@deparment varchar(30) = null
@depCode varchar(10) = null
询问
select * from company
where
(UPPER(name) like UPPER('%' @name '%') OR @name is NULL) AND
(UPPER(city) like UPPER('%' @city '%') OR @city is NULL) AND
UPPER(deparment) LIKE
CASE WHEN @deparment IS NOT NULL AND @depCode is NOT NULL
THEN UPPER('%' @deparment '%') END AND
UPPER(depCode) LIKE
CASE WHEN @deparment IS NOT NULL AND @depCode is NOT NULL
THEN UPPER('%' @depCode '%') END
CASE 语句不能正常工作。如果我评论两个案例语句并传递输入值或不为名称和城市查询工作正常。@deparment 和 @depCode 相互依赖。
我的要求——
- 如果我为@deparment 传递null 并为@depCode 传递有效输入,它应该忽略条件并代表@name 和@city 获取数据
- 如果我为@depCode 传递null 并为@deparment 传递有效输入,它应该忽略条件并代表@name 和@city 获取数据
- 如果我为@depCode 和@deparment 传递有效输入,它会代表所有4 个输入获取数据。
- 如果我不传递任何输入,它也应该获取数据。
解决方案
推荐阅读
- ruby-on-rails - 使用 Ruby On Rails 中的 Devise-jwt 作为后端和 Vuejs 作为前端的用户身份验证
- mysql - 如何在一个 sql 查询中计算多个表中的行数
- css - 在单独的 React 组件中集成引导程序和物化 css
- kubernetes - Kubernetes 可以 telnet 进入 POD 但不能 curl 网页内容
- signalr - SignalR 海报可用性
- vhdl - 如何在 vhdl 中声明自定义库?
- css - 我们如何在 Angular 的输入字段上使用 :before 或 :after 伪元素?
- sharepoint-online - 在 SharePoint 应用程序上执行负载测试时,它显示 WinAuth 错误,如何解决?
- apache - 通过 LAN 网络从另一台计算机访问 localhost (xampp) 而不更改 URL
- java - 如何在 Jmeter 线程中从文件中发送消息