我有一个存储条形码的Regex模式的表。我需要找到一个对应于给定条形码的正则表达式行。例如,如果条形码是000912345,则查询应该从下表中返回Id为1的行。| id|条码正则表达式|源ID|| - -----|- -----|- -----|| 1| ^(00)0 - 9 [0-9]{5}$|1|| 2| ^(00)0 - 9 [0-9]{16}$|2|这是否可能不遍历行?
000912345
f0ofjuux1#
下面是一个示例TableT:| id|条码正则表达式|条形码状|源ID|| - -----|- -----|- -----|- -----|| 1| ^(00)0 - 9 [0-9]{5}$|0009____|1|| 2| ^(00)0 - 9 [0-9]{16}$|0009_________|2|下面是一个DDL示例:
TableT
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进行第二次过滤,以消除任何误报。
barcode_like
barcode_regex
1条答案
按热度按时间f0ofjuux1#
下面是一个示例
TableT
:| id|条码正则表达式|条形码状|源ID|
| - -----|- -----|- -----|- -----|
| 1| ^(00)0 - 9 [0-9]{5}$|0009____|1|
| 2| ^(00)0 - 9 [0-9]{16}$|0009_________|2|
下面是一个DDL示例:
下面是相应的SQL Query:
这将基于
barcode_like
生成一个候选列表,您必须在应用程序中基于barcode_regex
进行第二次过滤,以消除任何误报。