Как насчет SUBSTR
?
SQL> WITH test (id, name)
2 AS (SELECT 1, 'VA_901085_000002_002_.txt' FROM DUAL
3 UNION ALL
4 SELECT 2, 'VA_901085_000002_003_.txt' FROM DUAL
5 UNION ALL
6 SELECT 3, 'VA_901085_000002_003.txt' FROM DUAL
7 UNION ALL
8 SELECT 4, 'VA_902833_000001_001.pdf' FROM DUAL
9 UNION ALL
10 SELECT 5, 'BT_049009-200811281247.pdf' FROM DUAL)
11 SELECT *
12 FROM test
13 WHERE SUBSTR (name, 1, 2) = 'VA'
14 AND SUBSTR (name, -5) = '_.txt';
ID NAME
---------- --------------------------
1 VA_901085_000002_002_.txt
2 VA_901085_000002_003_.txt
SQL>
Проблема в вашем коде заключается в том, что вы использовали подчеркивание _
, которое является подстановочным символом поиска (так же, как %
), но которое используется только для одного персонажа. Это означает, что вы должны убежать это (см. Строку № 14):
SQL> WITH test (id, name)
2 AS (SELECT 1, 'VA_901085_000002_002_.txt' FROM DUAL
3 UNION ALL
4 SELECT 2, 'VA_901085_000002_003_.txt' FROM DUAL
5 UNION ALL
6 SELECT 3, 'VA_901085_000002_003.txt' FROM DUAL
7 UNION ALL
8 SELECT 4, 'VA_902833_000001_001.pdf' FROM DUAL
9 UNION ALL
10 SELECT 5, 'BT_049009-200811281247.pdf' FROM DUAL)
11 SELECT *
12 FROM test
13 WHERE NAME LIKE 'VA%'
14 AND (name LIKE '%?_.txt' ESCAPE '?');
ID NAME
---------- --------------------------
1 VA_901085_000002_002_.txt
2 VA_901085_000002_003_.txt
SQL>