gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:20:00 25 4
gpt4 key购买 nike

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 中的结束字符串始终不相同,因此我无法使用修剪方法删除In子句中的某些字符和匹配项。

-- 上面抛出错误的子查询返回了超过 1 个值

-- 我在两个表中都有数千行,只是为了示例目的,我创建了这个示例

--excepted output 
--IBM
--hp

--来自A表

最佳答案

试试这个 -

查询:

SELECT * 
FROM A
WHERE EXISTS(
SELECT 1
FROM B
WHERE b_desc LIKE '%' + a_desc + '%'
)

输出:

id          a_desc
----------- ----------
2 hp
3 IBM

执行计划:

proff

扩展统计:

stat

更新:

SELECT A.*, B.* 
FROM A
OUTER APPLY (
SELECT *
FROM B
WHERE b_desc LIKE '%' + a_desc + '%'
) B
WHERE b_desc IS NOT NULL

关于sql - 在 SQL 中使用 [like] like in 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17481705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com