sql - 获取两个表之间的数据匹配 - 如果至少三个字符匹配或更多
问题描述
如何获得两个表之间的数据匹配,匹配的逻辑应该是 - 如果至少三个字符匹配或更多:
在一张桌子上,我有:
Assets
--------
MADFG
NGGS_Data
KTL_GAS_LCN
FI
在另一个表中:
Asset
------------
VERT
NGS
KTLGAS
FIP
作为我需要的输出:
Asset_table1 Asset_table2
----------- ------------
NGGS_Data NGS
KTL_GAS_LCN KTLGAS
我试图使用来自这个示例链接的查询,但这并没有给我我需要的结果:
谢谢,小号
解决方案
您可能需要使用递归 CTE。这给出了预期的结果。
CREATE TABLE #Assets(Assets VARCHAR(20))
CREATE TABLE #Asset(Asset VARCHAR(20))
INSERT INTO #Assets VALUES
('MADFG')
,('NGGS_Data')
,('KTL_GAS_LCN')
,('FI')
INSERT INTO #Asset VALUES
('VERT')
,('NGS')
,('KTLGAS')
,('FIP')
;WITH cteAssets AS
(
SELECT
Assets
,left(Assets,2) Char2
,RIGHT(Assets,len(assets)-1) Rem
FROM
#Assets
WHERE len(Assets) >= 3
UNION ALL
SELECT
Assets
,left(Rem,2) Char2
,RIGHT(Rem,len(Rem)-1) Rem
FROM
cteAssets
WHERE len(Rem) >= 2
)
SELECT DISTINCT
A.Assets
,B.Asset
FROM
cteAssets A
INNER JOIN #Asset B
ON
CHARINDEX(A.Char2,B.Asset,0) > 0
推荐阅读
- prometheus - Grafana 无法从 python prometheus 获取指标(“未找到指标”)
- backwards-compatibility - 兑换版本和功能向后兼容
- javascript - 将 request.get 中的值分配给 const 以供进一步使用。节点 Js
- javascript - 如何获取pdf文件的页数
- raspbian - 如何使用 xinetd 通过 TCP 将管道传输到另一个程序的标准输入
- google-docs-api - 使用 user.birthday.read 范围获取生日信息
- python - 我编写了一个程序,用字母顺序替换输入字符串中的所有字符,但我不明白为什么它没有按预期工作
- android - 强制数据绑定以获取所有中间媒体 livedata / mediatorlivedata 更改
- javascript - 是的,'notRequired' 方法似乎在我的表单验证中不起作用
- amazon-web-services - 在 Amazon S3 中设置每个客户端的存储桶的最简单方法