首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中使用[ like ] like in子句?

在SQL中使用[ like ] like in子句?
EN

Stack Overflow用户
提问于 2013-07-05 13:31:40
回答 4查看 454关注 0票数 5
代码语言:javascript
复制
USE tempdb

CREATE TABLE A
(
     id INT,
     a_desc VARCHAR(100)
)

INSERT INTO A 
VALUES (1, 'vish'),(2,'hp'),(3,'IBM'),(4,'google')

SELECT * FROM A

CREATE TABLE B
(
     id INT,
     b_desc VARCHAR(100)
)

INSERT INTO B 
VALUES (1, 'IBM[SR4040][SR3939]'),(2,'hp[GR3939]')

SELECT * FROM B

SELECT * 
FROM A 
WHERE a_desc LIKE (SELECT b_desc FROM B) -- IN with LIKE problem here

在表B中,结束字符串总是不同的,所以我不能使用trim方法来删除某些字符并在in子句中进行匹配。

--上述抛出错误子查询返回1个以上的值

--我在两个表中都有1000行,只是为了举例,我创建了这个示例

代码语言:javascript
复制
--excepted output 
--IBM
--hp 

--来自表格

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-05 13:35:28

试试这个-

查询:

代码语言:javascript
复制
SELECT * 
FROM A
WHERE EXISTS(
    SELECT 1
    FROM B
    WHERE b_desc LIKE '%' + a_desc + '%'
)

输出:

代码语言:javascript
复制
id          a_desc
----------- ----------
2           hp
3           IBM

执行计划:

扩展统计信息:

更新:

代码语言:javascript
复制
SELECT A.*, B.* 
FROM A
OUTER APPLY (
     SELECT * 
     FROM B
     WHERE b_desc LIKE '%' + a_desc + '%' 
) B
WHERE b_desc IS NOT NULL
票数 5
EN

Stack Overflow用户

发布于 2013-07-05 13:38:56

你可以简单的加入:

代码语言:javascript
复制
SELECT distinct a.* 
from A inner join b on b.b_desc like '%' + a.a_desc + '%' 
票数 3
EN

Stack Overflow用户

发布于 2013-07-05 13:42:11

试试这个,它会给你准确的输出。

代码语言:javascript
复制
select distinct a.a_desc 
from A r 
join B b
on b.b_desc like  a.a_desc +'%'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17481705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档