在sql server 中like 一个字段

ID goid
123456 234
258369 234
我现在要加一个条件:goid中包含于id中 
这里要出的结果就该是
id goid
123456 234
这个要怎么做,感恩啊!!!!!!

ITMISS
浏览 333回答 4
4回答

倚天杖

由于不知道你是用SQLSERVER还是ORACLE,我就先给你一个SQLSERVER版本的吧!如果你的字段定义是id为字符类型(nvarchar或varchar),而goid也是字符类型的话就很简单了!直接用like或者charindex就行了!测试sql如下:create table #1(id varchar(10),goid varchar(10));insert into #1( id,goid)values('123456','345'),('222444','123'),('56789','89'),('123','1');select * from #1 where id like '%'+goid+'%';select * from #1 where charindex(goid,id)>0;drop table #1;如果你的字段定义是id为字符类型(nvarchar或varchar),而goid是整型(int,tinyint等)的话就要转换一下!测试sql如下:create table #2(id varchar(10),goid int);insert into #2( id,goid)values('123456',345),('222444',123),('56789',89),('123',1);select * from #2 where id like '%'+convert(varchar,goid)+'%';select * from #2 where charindex(convert(varchar,goid),id)>0;drop table #2;如果不属于上面两种情况,参考照转换方法都可以解决!下面是ORACLE版本的!因为ORACLE会自己来处理这些问题,直接用like或instr就行了!不分类型哈!测试sql如下:create table t1 (id nvarchar2(10),goid varchar(10));insert into t1( id,goid)values('123456','345');insert into t1( id,goid)values('222444','123');insert into t1( id,goid)values('56789','89');insert into t1( id,goid)values('123','1');select * from t1 where id like '%'||goid||'%';select * from t1 where instr(id,goid)>0;drop table t1;

MMMHUHU

select *from tabwhere ID LIKE '%' + goid + '%'

哆啦的时光机

select * from po_test where charindex(goid,ID)>0主要 id,goid必须是char类型的字段才可以

HUWWW

sql 中 like 要引用一个字段的值,需要使用连接符‘+’所以原语句:select * from 表 where 字段1 like '%字段2%'需要更改为:select * from 表 where 字段1 like '%'+字段2+'%'SQL Server中 用 + 来连接字符串。如果不是字符类型,应先转换成字符类型。也就是说,如果语句中的’字段2‘为数值型字段那么,语句需要更改为:select * from 表 where 字段1 like '%'+cast(字段2 as varchar(20))+'%'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server