如何使用列表查找SQL表列中的部分匹配?



我有一个很大的参考编号列表,例如:

'abc 123',
'abc 456',
'abc 789',
...

问题是我的列表缺少最后一位数字,所以当我搜索我的数据表以查看列表中的这些引用是否在我的数据表中时,我发现不匹配。

在SQL中,您可以使用WHERE In子句与某种类型的reg exp LIKE语句,以捕获最接近每个引用号的匹配?

我想这是一个非常手工的工作,但是我有一个相当长的列表,所以为每个引用写一个规则是没有效率的。

我通常会这样做:

SELECT *
FROM table
WHERE "reference_number" IN
('abc 123',
'abc 456',
'abc 789',
...
)

在我的数据表中,正确的引用在末尾会有一个额外的数字:

'abc 1235',
'abc 4567',
'abc 7891',
...
Any help would be very welcome, thank you!

将您的列表与列减去最后一个字符的列进行比较,例如

SELECT *
FROM table
WHERE left("reference_number", len("reference_number")-1) 
IN
('abc 123',
'abc 456',
'abc 789',
...
)

最新更新