我认为这就是你想要的:
示例数据:
DECLARE @table TABLE ( barcode VARCHAR(22) )
INSERT INTO @table
(
barcode
)
SELECT '0012145454545654521523'
UNION ALL
SELECT '0012142454545654521523'
UNION ALL
SELECT '5494627448634842135782'
UNION ALL
SELECT '5494625448634842135782'
第一个条件 - 满足 7,8 + 20
SELECT a.barcode,
b.barcode,
SUBSTRING(a.barcode, 7, 2) a,
SUBSTRING(b.barcode, 7, 2) b
FROM @table a
INNER JOIN @table b
ON SUBSTRING(a.barcode, 7, 2) + 20 = SUBSTRING(b.barcode, 7, 2)
AND a.barcode != b.barcode
返回:
barcode barcode a b
0012145454545654521523 5494627448634842135782 54 74
5494625448634842135782 5494627448634842135782 54 74
不存在 7,8 + 20 的否定
SELECT *
FROM @table a
WHERE NOT EXISTS ( SELECT TOP 1 1
FROM @table b
WHERE SUBSTRING(a.barcode, 7, 2) + 20 = SUBSTRING(b.barcode, 7, 2) )
返回:
0012142454545654521523
5494627448634842135782