SQL查询查找给定字符串的匹配Regex模式

gkn4icbw  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(144)

我有一个存储条形码的Regex模式的表。我需要找到一个对应于给定条形码的正则表达式行。例如,如果条形码是000912345,则查询应该从下表中返回Id为1的行。
| id|条码正则表达式|源ID|
| - -----|- -----|- -----|
| 1| ^(00)0 - 9 [0-9]{5}$|1|
| 2| ^(00)0 - 9 [0-9]{16}$|2|
这是否可能不遍历行?

f0ofjuux

f0ofjuux1#

下面是一个示例TableT
| id|条码正则表达式|条形码状|源ID|
| - -----|- -----|- -----|- -----|
| 1| ^(00)0 - 9 [0-9]{5}$|0009____|1|
| 2| ^(00)0 - 9 [0-9]{16}$|0009_________|2|
下面是一个DDL示例:

CREATE TABLE TableT (id INTEGER, barcode_regex VARCHAR(100), barcode_like VARCHAR (100), source_id INTEGER);
INSERT INTO TableT VALUES (1, '^(00)09[0-9]{5}$', '0009_____', 1);
INSERT INTO TableT Values (2, '^(00)09[0-9]{16}$', '0009________________', 2);

下面是相应的SQL Query:

SELECT id, barcode_regex, source_id
FROM   TableT
WHERE  '000912345' LIKE barcode_like;

这将基于barcode_like生成一个候选列表,您必须在应用程序中基于barcode_regex进行第二次过滤,以消除任何误报。

相关问题