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