Используя базовые строковые функции, мы можем попробовать:
SELECT
SRC_IP,
SUBSTR(SRC_IP, 1, INSTR(SRC_IP, '|') - 2) AS first_ip
FROM MESSAGE_LOG
ORDER BY
MSG_TYPE_CD;

Демо
Логика, стоящая за первым запросом, заключается в том, что мы находим положение канала |
, используя INSTR
.Затем мы берем подстроку от первого символа до двух символов перед каналом (чтобы исключить как канал, так и пространство перед ним).
Очень гладкий ответ с использованием REGEXP_SUBSTR
:
SELECT
SRC_IP,
REGEXP_SUBSTR(SRC_IP, '^[^ |]+') AS first_ip
FROM MESSAGE_LOG
ORDER BY
MSG_TYPE_CD;
Демо
Здесь используется шаблон регулярного выражения:
^[^ |]+
Это говорит о том, что нужно взятьлюбой символ в начале столбца SRC_IP
, который не пробел или pipe |
.Это значит, взять первый IP-адрес.