Как получить определенные позиции символов в строках столбца базы данных с помощью регулярных выражений в Oracle SQL?
Какой запрос Oracle SQL может возвращать вторую, третью и четвертую позиции символов, содержащихся в строках определенного столбца, используя метод REGEXP_SUBSTR
вместо метода SUBSTR
, как в моем примере, приведенном ниже?
SELECT SUBSTR(city,2,3) AS "2nd, 3rd, 4th"
FROM student.zipcode;`
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