【问题标题】:Retrieve records from a specific column with a specific pattern in Oracle database从 Oracle 数据库中具有特定模式的特定列中检索记录
【发布时间】:2016-08-10 16:46:31
【问题描述】:

该特定列的模式应如下所示

WAP
WAPA
WAPB
or
WAP
AWAP
XWAP

ABC
XABCY
ZABCO

等等……

WAP 不是恒定不变的,也可能会发生变化。我试过像 '%A_Z%';但不能正常工作

【问题讨论】:

标签: regex oracle oracle10g pattern-matching


【解决方案1】:

如果您正在寻找以下模式:

  • 一句话
  • 然后是一个非单词字符,后跟包含该单词的单词
  • 先前模式的重复

然后你可以这样做:

Oracle 设置

CREATE TABLE tests( value ) AS
SELECT 'WAP WAPA WAPB' FROM DUAL UNION ALL
SELECT 'WAP AWAP XWAP' FROM DUAL UNION ALL
SELECT 'ABC XABCY ZABCO' FROM DUAL UNION ALL
SELECT 'ABCDE,XABCDE,XXABCDE,ABCDEXXY,XABCDEYY' FROM DUAL;

查询

SELECT *
FROM   Tests
WHERE  REGEXP_LIKE( value, '^(\w+)(\W\w*\1\w*){2,}$' );

输出

VALUE                                
--------------------------------------
WAP WAPA WAPB                          
WAP AWAP XWAP                          
ABC XABCY ZABCO                        
ABCDE,XABCDE,XXABCDE,ABCDEXXY,XABCDEYY 

【讨论】:

  • 这不是三个字,这只是一个例子。我正在寻找构成单词的任何字符,并基于该单词,它应该在与该单词相关的特定列中查找,例如如果 ABCDE 是一个单词,那么该列应该能够检索与该世界相关的记录,例如 ABCDE、XABCDE ,XXABCDE,ABCDEXXY,XABCDEYY
  • @Pradeep 已更新 - 我已匹配您提供的新模式,但您的要求非常不清楚。请编辑您的问题,详细描述您的预期表值、您希望这些值如何匹配以及预期输出。
  • 如果值类似于 AABBCC,则特定单词的输出应该是这样的,那么结果可能是 AABBCC XAABBCC YAABBCC 我将再次编辑我的问题
  • 我把问题改了清楚,你能帮忙
猜你喜欢
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
相关资源
最近更新 更多