SQL开发人员在长字符串中搜索类似Regexp_的短语

SQL开发人员在长字符串中搜索类似Regexp_的短语,sql,oracle,Sql,Oracle,全部, 我试图在一个长字符串中寻找一个短语(“观察到的trd3uFLS”),我遇到了麻烦。有时子字符串可以是开始,有时在中间,有时在结尾。 MAX(CASE WHEN REGEXP_LIKE(B.shipment,'Observed TRD3 Ufls','i') THEN 1 ELSE 0 END) OVER (PARTITION BY d.Status) AS Tag 有时“观察”可以“观察”,所以我需要能够同时获得这两种结果,最后,它需要不区分大小写 我查看的每个结果总是0而不是

全部,

我试图在一个长字符串中寻找一个短语(“观察到的trd3uFLS”),我遇到了麻烦。有时子字符串可以是开始,有时在中间,有时在结尾。
    MAX(CASE WHEN REGEXP_LIKE(B.shipment,'Observed TRD3 Ufls','i') THEN 1 ELSE 0 END) OVER (PARTITION BY d.Status) AS Tag
有时“观察”可以“观察”,所以我需要能够同时获得这两种结果,最后,它需要不区分大小写


我查看的每个结果总是0而不是1。如果您有任何帮助,我们将不胜感激!

您可以使用如下方法代替
REGEXP

upper(B.shipment) LIKE '%OBSERVED TRD3 UFLS%'

请注意,即使匹配的字符串位于列的开头、中间或结尾,它也可以正常工作。在我看来,您当前的正则表达式逻辑应该出现在
where
子句中:

选择*
从你的桌子上
其中REGEXP_类似(装运,'TRD3 Ufls','i');
您当前对
REGEXP\u LIKE
的调用应该已经在对文本进行不区分大小写的搜索。请注意,严格来说,如果您想在文本中找到确切的文本
观察到的TRD3 Ufls
,您应该使用单词边界:

选择*
从你的桌子上
其中,REGEXP_LIKE(装运,“(^ |\s)观察到TRD3 Ufls(\s |$)”,“i”);

这将匹配开头、中间或结尾的文本。

谢谢!这很有效。我将添加一个或类似“%OBSERVE TRD3 UFLS%”来捕捉其他文本。@AwFawk这也将匹配
未观察到的TRD3 UFLSAAA
,这可能不是您想要的。这可以用匹配字符串开头和结尾的空格来处理。这在t上不起作用他提供了一份案情陈述(我有其他关于where so Tod用例何时标记这些实例的标准。你没有问完整的问题,因为你没有显示完整的查询或任何数据。因此,我似乎没有给出完整的答案。这里没有什么意外。作为一个初学者,我感谢你的好意。谢谢你的尝试,并表示歉意。