Как получить определенные позиции символов в строках столбца базы данных с помощью регулярных выражений в Oracle SQL?


Какой запрос Oracle SQL может возвращать вторую, третью и четвертую позиции символов, содержащихся в строках определенного столбца, используя метод REGEXP_SUBSTR вместо метода SUBSTR, как в моем примере, приведенном ниже?

SELECT SUBSTR(city,2,3) AS "2nd, 3rd, 4th"
FROM student.zipcode;`
1 2

1 ответ:

Один из способов, который работает для меня (с тестовыми данными):

SELECT REGEXP_SUBSTR(city, '\S{3}', 2) AS partial FROM student.zipcode;

Обратите внимание, что этот параметр задан для поиска трех символов, не являющихся пробелами, начиная со второй позиции строки.

Вы также можете использовать:

SELECT REGEXP_SUBSTR(city, '.{3}', 2) AS partial FROM student.zipcode;

, который вместо этого будет соответствовать любым трем символам в 2-4-й позиции.

Однако я не уверен, какое преимущество это имеет перед Просто:

SELECT SUBSTR(city,2,3) AS partial FROM student.zipcode;

Функция REGEXP_INSTR - это не то, что вы хотите, так как она возвращает индекс (номер позиции) для элемента поиска в строка поиска. Вы можете прочитать об этом здесь: http://www.techonthenet.com/oracle/functions/regexp_instr.php