gpt4 book ai didi

sql - Oracle SQL : Return first line of string using regexp_substr

转载 作者:行者123 更新时间:2023-12-04 13:42:42 25 4
gpt4 key购买 nike

我正在尝试从 SQL 查询(oracle 11)中的文本框中返回第一行文本。文本框的内容如下所示:

   X WITHDRAWN

Explanation.

我想返回顶行,即 X WITHDRAWN。我不确定我是否可以指定只查看第一行,或者只在回车之前返回所有文本 - 两者都可以。

我想我需要使用 regexp_substr 但我不太确定语法。我试过了:
   regexp_substr(TABLE.TEXT,'^.*$')

但它没有用,所以任何帮助将不胜感激!

编辑:使用的解决方案:
   select regexp_substr(TABLE.TEXT, '[^,]+['||CHR(10)||']') from tab

编辑:我注意到我的答案中混合了换行符和回车符,所以我使用以下解决方案只返回文本而不返回其他字符。
    select 
replace(replace(regexp_substr(TABLE.TEXT, '[^,]+['||CHR(10)||']'),CHR(10),''),CHR(13),'')
from tab

编辑:按照@Ben 的回答,我已将我的解决方案修改为以下内容:
select
initcap(replace(regexp_substr(TABLE.TEXT, '.*$', 1, 1, 'm'),CHR(13),''))
from tab

最佳答案

Parado 的正则表达式多次匹配不是逗号的所有内容,后跟一个回车符。这意味着它不适用于换行或文本中有逗号。

Oracle 使用 m 支持多行表达式match parameter .使用此模式时,$匹配每一行的结尾以及字符串的结尾。您可以使用它来大量简化表达式:

regexp_substr(str, '.*$', 1, 1, 'm')

即匹配匹配任何内容的字符串的第一次出现(第一行),然后是字符串的结尾,从第一个字符开始计数。

举个例子:
with strings as ( 
select 'hi
hi again' as str
from dual
union all
select 'bye
and again'
from dual
)
select regexp_substr(str, '.*$', 1, 1, 'm')
from strings

关于sql - Oracle SQL : Return first line of string using regexp_substr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17652730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com