Я нахожусь в такой ситуации.
У меня есть таблица, которая выглядит примерно так:
TableA
ID Name
1 First
2 Second
3 Third
...
У меня есть вторая таблица, которая выглядит примерно так:
TableB
ID Name
...
95 Fifth
96 First
97 First121
98 Third9
99 1Second22
100 Fourth
...
Я пытаюсь выяснить, как найти точно любую запись в ТАБЛИЦЕ B, которая соответствует следующему формату:
^ [Подстрока в ТАБЛИЦЕ A] [0-9] *
Следовательно, записи 97 и 98 должны быть в наборе результатов. Если там 96 и 99, я могу с этим справиться, но в идеале я бы не хотел.
По сути, я пытаюсь выяснить, как использовать синтаксис WHERE IN / JOIN для поиска записей в таблице B, которые находятся в TABLE, но использовать этот набор результатов как часть выражения регулярного выражения.
Поскольку я использую это в контексте Javascript с библиотекой sqlite для node.js, я могу теоретически вернуть все совпадения и вручную построить цепочку операторов WHERE с заполнителями на основе возврата предыдущего запроса, например:
SELECT *
FROM TableB
WHERE name REGEXP '^(?)[0-9]*' OR
name REGEXP '^(?)[0-9]*' OR
С одним (?) Заполнителем для каждого значения в Таблице А. Я хотел бы знать, возможно ли сделать это в одном выражении, так как это кажется очень неуклюжим. В идеале я снимаю что-то вроде этого, но это не сработает так:
SELECT *
FROM TableB
WHERE name REGEXP '^(SELECT ...)[0-9]*'