BETWEEN
не , кажется, разрешает экранирование групповых символов с использованием этого синтаксиса ; Я предполагаю, что вы получаете ORA-00933: команда SQL не была правильно завершена? (Всегда полезно указывать ошибку, которую вы видите). Хотя допускается альтернативный синтаксис:
select * from test_table
where column_A between 'A[_]%' and 'B[_]%';
Редактировать На самом деле, хотя синтаксис разрешен, он ничего не делает; BETWEEN
не рассматривает _
как универсальный символ в любом случае, хотя он обрабатывает %
как единое целое.
Редактировать 2 Как указал @Allan, на самом деле %
не рассматривается как подстановочный знак, а только как работает порядок символов.
Я не уверен, что это то, что вы на самом деле хотите, так как это даст вам A_1, A_2, A_3, B1, B2, B3
(по крайней мере, с моими параметрами NLS).
Если вы действительно хотите A_1, A_2, A_3, B_1, B_2, B_3
, тогда вы можете использовать REGEXP_LIKE
вместо этого, например:
select * from test_table
where regexp_like(column_A, '^([AB])_';
(хотя я с удовольствием расскажу другим о том, как лучше это построить).