gpt4 book ai didi

sql - MS SQL - 用一列中的子字符串键连接两个表

转载 作者:行者123 更新时间:2023-12-04 06:23:35 25 4
gpt4 key购买 nike

我有一个需要加入的 2 个表,但是在其中一个表上,我需要从每行的 varchar 字段中提取一个键。

表 1 说明(数字 18,varchar 4000)

    descriptionid   description 
1 Blah Blah: Queue 1Blah Blah
2 foobar:Queue 2
3 rem:Queue 2 -This is a note
4 Anotherrow: Queue 3
5 Something else

表 2 队列 -(数字 18,varchar 100)
    queueid queue

123 Queue 1
124 Queue 2
127 Queue 3
129 Queue 4

所以我需要像这样产生输出

查看 3 队列-描述(数字 18、数字 18)
    descriptionid   queueid
1 123
2 124
3 124
4 127
5 null

因此,在表 1 的第 1 行中,我需要从描述中删除值 Queue1,验证它是否在队列表中,然后查找 queueid。

我无法更改表 1 和表 2 的结构。

在 MSSQL 中有哪些方法可以实现这一点?

在 SQL 中执行此操作的最有效方法是什么 - 在此处使用 MSSQL 2005。

最佳答案

most efficient way



嗯...不知道,但这是一种方式。
select T1.descriptionid,
T2.queueid
from Table1 as T1
left outer join Table2 as T2
on T1.description like '%'+T2.queue+'%'

其它的办法
select T1.descriptionid,
T2.queueid
from Table1 as T1
left outer join Table2 as T2
on charindex(T2.queue, T1.description, 1) > 0

如果有多个匹配项(请参阅 Ed Harper 的评论),您可以使用它来选择匹配时间最长的匹配项。
select T1.descriptionid,
T2.queueid
from Table1 as T1
outer apply (
select top 1 T3.queueid
from Table2 as T3
where charindex(T3.queue, T1.description, 1) > 0
order by len(T3.queue) desc
) as T2(queueid)

关于sql - MS SQL - 用一列中的子字符串键连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6290564/

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