Разве sql-сервер не знает подстановочный знак для одного символа?
select * from table_a
where nodes LIKE '#node1#node2#node_#';
nodes
---------------------
#node1#node2#node5#
#node1#node2#node3#
Я тестирую это на postgresql, где трудно вставить обратную косую черту, поэтому я заменил их на #.
Вот еще одна возможность - отменить более одного обратного слеша (# используется для моего удобства):
SELECT * FROM table_a
WHERE (nodes LIKE '#node1#node2#%#'
AND NOT nodes LIKE '#node1#node2#%#%#');
В postgresql также есть возможность сопоставления с шаблонами, с SIMILAR TO или ~:
SELECT * FROM table_a
WHERE nodes SIMILAR TO '#node1#node2#[^#]*#';
nodes
---------------------
#node1#node2#node5#
#node1#node2#node3#
[] инкапсулирует группу альтернативно разрешенных символов, например, [aeiou] будет строчным вокалом. Но когда каретка является первым знаком в скобках, знак (ы) отменяются, поэтому [^ aeiou] будет означать что угодно, кроме строчных вокалов, а [^ #] означает что угодно, кроме #.
Звездочка за этим выражением означает, что предыдущий знак может встречаться так часто, как вы хотите, от 0 до миллиона раз. (+ будет означать хотя бы один раз,? будет означать 0 или 1 раз).
Итак, '# node1 # node2 # [^ #] * #' означает '# node1 # node2 #', за которым следует что угодно, кроме хэша, 0 или один или несколько раз, а затем, наконец, хеш.