SQL SERVER和Oracle中in查询在实际中的应用
来源:互联网 发布:js身份证号正则表达式 编辑:程序博客网 时间:2024/06/09 19:50
在实际项目中,我们常常会遇到前台传入一个字符串,字符串用符号(比如逗号‘,’)隔开的情况。我们都知道不论是Oracle还是sqlserver数据库in后面的条件都是多个字符串,这就意味着我们需要把前台传入的用符号分割开的一个字符串拆分成多个。
在SQL SERVER中:
我们是用的charindex函数,charindex函数怎么用的我就不多介绍,请自行百度。我只说具体在项目中的应用。
sql语句: select * from kpi_KPI_DEFINE where charindex(','+convert(varchar,kpitype)+',',','+'2,2,3'+',')>0
kpitype是要对kpi_KPI_DEFINE 表中做in查询(功能相同,本条语句中没有用in)的字段,字符串‘1,2,3’就是开始所说的前台传入的字符串。ok,大功告成,是不是很简单!需要注意的是第一个参数必须是字符串类型的,否则会报错,所以这里用到了convert函数转换一下类型,如果字段本身就是字符串类型的就不用转换了。
在Oracle中:
在Oracle中实现方案1:REGEXP_SUBSTR函数。具体应用:
SELECT * FROM kpi_KPI_DEFINE WHERE KPINAME IN (
SELECT REGEXP_SUBSTR(REPLACE('永安,复保,鼎睿,葡保,MIG',';',''),'[^,]+',1,LEVEL,'i') FROM DUAL
CONNECT BY LEVEL <= LENGTH('永安,复保,鼎睿,葡保,MIG') - LENGTH(REPLACE('永安,复保,鼎睿,葡保,MIG', ',', ''))+1
)
在Oracle中实现方案2:instr函数
SELECT * FROM kpi_KPI_DEFINE where instr('1,2,3',KPINAME )>0 这个是后来加上的 新发现的一种更好用的用法(20171205)
- SQL SERVER和Oracle中in查询在实际中的应用
- 在C#应用中如何读取存在ORACLE(或SQL Server)中的MapInfo表
- Oracle与SQL Server在企业应用中的比较
- Oracle与SQL Server在企业应用中的比较
- 在SQL Server中连接Oracle,完成查询、插入操作
- oracle从入门到精通 之 六.函数,动态sql,游标在实际中的应用
- sql-server中,Convert函数在查询日期中的用法。
- SQL SERVER数据库 LINK ORACLE数据库 如何实现在SQL SERVER查询分析器中对ORACLE查询
- oracle中的connect by 在sql server中实现
- 在 Sql Server 中访问Oracle数据库中的数据
- 在SQL Server中获取类似于Oracle中的rowid
- 在SQL Server中获取类似于Oracle中的rowid
- Oracle 临时表在实际开发中的应用
- 六.函数,动态sql,游标在实际中的应用
- ORACLE 和 SQL 在EXT中分页查询代码
- 如何在SQL Server和Oracle中创建job
- Mybatis查询实例,sql中的in在Mybatis中怎么写--以list为查询条件
- Mybatis查询实例,sql中的in在Mybatis中怎么写--以list为查询条件
- Request获取请求数据
- MySql导入导出
- HDU 4815 Little Tiger vs. Deep Monkey(母函数)
- 把之前安装的jdk1.7换成1.6之后在dos命令Java -version 死活1.7问题解决
- 发送邮件
- SQL SERVER和Oracle中in查询在实际中的应用
- Spring boot 使用异步@Async
- app 开发及其android studio 打包遇到的问题总结(二)
- Oracle中rank() over, dense_rank(), row_number() 的区别
- oracle 身份证号检查函数
- 装了多个tomcat后,如何修改tomcat端口
- 使用ElasticSearch快速搭建数据搜索服务
- zend studio编辑器打开项目和显示项目
- android水印开发