单个SQL查询中的正则表达式

单个SQL查询中的正则表达式,sql,regex,oracle,Sql,Regex,Oracle,如果输入字符串的格式为string#string或string#string;String#String其中String可以有任意数量的大写字母,下划线,然后它应该返回Y,否则它应该返回N 如何仅在单个SQL查询中使用PL/SQL中的正则表达式 (注意:不使用PL/SQL过程/函数。) 示例:-如果输入字符串是“CASISA#Y”或“INVOPT#LUMREG;LUMSUM#2000;REGSUM#8000”,则应返回“Y”,否则应返回“N”。 注意-请不要构建PL/SQL过程来完成此操作,它应

如果输入字符串的格式为string#stringstring#string;String#String其中String可以有任意数量的大写字母,下划线,然后它应该返回Y,否则它应该返回N

如何仅在单个SQL查询中使用PL/SQL中的正则表达式 (注意:不使用PL/SQL过程/函数。)

示例:-如果输入字符串是“CASISA#Y”“INVOPT#LUMREG;LUMSUM#2000;REGSUM#8000”,则应返回“Y”,否则应返回“N”。
注意-请不要构建PL/SQL过程来完成此操作,它应该只是一个使用oracle正则表达式函数的SQL。*

您可以使用类似正则表达式函数的
regexp\u
正则表达式函数来实现所需的结果:

with t1(col) as(
  select 'CASISA#Y'                              from dual union all
  select 'INVOPT#LUMREG;LUMSUM#2000;REGSUM#8000' from dual union all
  select 'CASISA#Y;'                             from dual union all -- extra data
  select 'INVOPT#LUMREG;LUMSUM#2000;#8000'       from dual           -- extra data
)
select col
     , case
         when regexp_like(col, '^(\w+#\w+;)*(\w+#\w+){1}$')
         then 'Y'
         else 'N'
       end  as "Y/N"
  from t1 
结果:

COL                                        Y/N
--------------------------------------------------
CASISA#Y                                    Y
INVOPT#LUMREG;LUMSUM#2000;REGSUM#8000       Y
CASISA#Y;                                   N
INVOPT#LUMREG;LUMSUM#2000;#8000             N

您能稍微澄清一下您的问题吗?提供一个示例字符串,并指出要匹配的子字符串。你已经试过什么了?plsql再次检查问题我添加了示例Oracle的版本是什么?