Line1
Line2
输出
SELECT
REGEXP_SUBSTR (
str,
'(.*?)(~-delim~-|$)',
1,
LEVEL,
NULL,
1
) output
FROM (
SELECT 'Line1'||chr(10)||'~-delim~-Line2' AS str FROM DUAL
)
CONNECT BY LEVEL <= REGEXP_COUNT (str, '~-delim~-') + 1
Line2
输出
Line1
Line2
为什么换行会导致字符串受损?我希望输出为:
SELECT *
FROM ParkingSession
JOIN Customer ON ParkingSession.CustID = Customer.CustID
WHERE Customer.Registration = "BH34 JHN"
ORDER BY (TIME(DateTimeStart) + Hours) ASC;
答案 0 :(得分:3)
默认情况下,Oracle regexp引擎与通配符.
与换行符(chr(10)
)不匹配。
您可以使用regexp_substr
的第五个参数来更改该行为。目前您已为其指定了null
。将其更改为'n'
(包括单引号),然后重试。你会得到你需要的东西。
然后查看REGEXP_SUBSTR
的文档,特别是第五个参数 - 您将看到其他可用选项。你现在可能不需要它们,但也许你将来需要时记住它们。