【Transact-SQL】T-SQL中的Like

本文展示了如何使用SQL中的LIKE函数简化查询流程,将原本需要几十行代码实现的功能,通过一句SQL语句完成。通过建立表格并插入数据,演示了LIKE函数在查询操作中的应用,并对比了其与游标操作的区别。尽管未在大数据量情况下测试,但该方法在提升查询效率方面显示出明显优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先进行一下简单的说明:

表tblb的address字段可能是包含了表tbla的address字段的内容,如果确实是包含了,那么返回tbla中的项目名称。


以前用游标来实现的功能,大概要写个几十行,现在用Like来实现,只要一句SQL就行了,感觉方便多了。

不过没有在大数据量的情况之下进行测试。


代码如下:

 

--先建立2个表格
create table tbla (ename varchar(50) ,address varchar(50))
create table tblb (address varchar(50))


insert into tbla values('金顺小区','金顺里x号')
insert into tbla values('华小园','华小园xx号院')
insert into tbla values('通天院项目','通天苑x号楼')


insert into tblb values('南开华小园xx号院')
insert into tblb values('华山通天苑x号楼1111')
insert into tblb values('东城区金顺里x号100')
go

--drop table tbla
--drop table tblb

 

 

 

--通过派生表来实现,派生表只能在本语句中使用
select * 
from
(
	select case when b.address like '%'+a.address+'%' 
					 then a.address
				else NULL 
		   end as simple_address,
	       
		   a.ename as building,
		   b.address as more_address
	from tbla a 
	cross join tblb b
) derive 
where simple_address is not null

/*

simple_address    building         more_address
金顺里x号           金顺小区          东城区金顺里x号100
华小园xx号院        华小园            南开华小园xx号院
通天苑x号楼         通天院项目        华山通天苑x号楼1111
*/

 

 

在SQL Server 2005中可以通过通用表表达式CTE来实现,代码如下:

 

--通过CTE来实现,在批处理级别使用
with derive(building,simple_address,more_address)
as
(select a.ename as building,

        case when b.address like '%'+a.address+'%' 
                  then a.address
             else NULL 
        end as simple_address,
             
        b.address as more_address
from tbla a 
cross join tblb b
)

select * from derive 
where simple_address is not null

 

转载于:https://www.cnblogs.com/momogua/archive/2011/08/05/8304652.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值