【问题标题】:How can i extract a specific part of string in oracle?如何在 oracle 中提取字符串的特定部分?
【发布时间】:2014-09-13 02:34:03
【问题描述】:

我有一些列名为“text_note”的记录。现在我需要找出哪个 text_note 包含像%CTOE0% 这样的字符串。

我认为可以使用正则表达式来完成,但由于我不太熟悉 使用正则表达式,我无法为其创建正则表达式。

请帮忙。
忘了提 我想要不同库中的代码(CTOE)部分

我的问题是我不想在下一列中显示“CTOE”。我想知道使用了什么代码。可以使用的代码类型有CTOE01、CTOE02、CTOE03等。现在我想知道这些代码中的哪一个被使用了。

示例如下:如果文本不包含“dsghdsCTOE01dbhf”,则新列应包含“CTOE01” 如果文本不包含“dsCTOE02dbhf”,则新列应包含“CTOE02” –

【问题讨论】:

    标签: regex oracle oracle11g oracle10g oracle-sqldeveloper


    【解决方案1】:

    我会为此使用regexp_substr

    CREATE TABLE t (text_note VARCHAR2(30));
    INSERT INTO t VALUES ('dsghdsCTOE01dbhf');
    INSERT INTO t VALUES ('dsCTOE02dbhf');
    INSERT INTO t VALUES ('soemthingelse');
    
    SELECT text_note, 
           regexp_substr(text_note, 'CTOE[0-9]+') AS code 
      FROM t
     WHERE   regexp_like(text_note, 'CTOE[0-9]+');
    
    
    text_note         code
    ----------------  ----
    dsghdsCTOE01dbhf  CTOE01
    dsCTOE02dbhf      CTOE02
    

    regexp_substr 提取您的新列,regexp_like 过滤包含CTOE... 的行。

    【讨论】:

    • 我同意您的 reg 表达式(括号虽然没有为此要求添加任何值),但您没有过滤器来查找类似 'CTOE[0-9]+' 的记录。
    【解决方案2】:

    如果您的意思是该字段以% 开头和结尾并且只包含大写字母和数字:

    SELECT * FROM yourtable
    WHERE REGEXP_LIKE(text_note, '^%[A-Z0-9]+%$', 'c');
    

    【讨论】:

    • 我如何在不同的列中并排显示“ctoe”部分??
    【解决方案3】:

    编辑:

    SELECT text_note, 
    substr(text_note, (instr(text_note, 'CTOE0')), 6)   AS CODE
    FROM table where text_note like '%CTOE0%';
    

    在上面的查询中,我假设您的代码只有 6 个字符长,并使用 substr 函数来捕获 6 个字符的代码。所需的输出是通过上述查询获得的。


    原始答案:

    看看这是否对你有帮助!

    Select text_note, 'CTOE' CODE from table
    where text_note like '%\%CTOE0\%%;
    

    我假设 % 也是您的搜索字符串的一部分,并试图逃避给定的百分比 here

    【讨论】:

    • 感谢您的回复,但我的问题是我不想在下一列中显示“CTOE”。我想知道使用了什么代码。可以使用的代码类型有CTOE01、CTOE02、CTOE03等。现在我想知道这些代码中的哪些已经被使用了。
    • @user3146332:那你想展示什么。请使用示例输出编辑您的问题,并在此问题下方发表评论。
    • 好的,但是 text_note 包含什么?会不会一样?
    • 示例如下:如果文本不包含“dsghdsCTOE01dbhf”,则新列应包含“CTOE01” 如果文本不包含“dsCTOE02dbhf”,则新列应包含“CTOE02”
    猜你喜欢
    • 1970-01-01
    • 2022-11-18
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多