回答

收藏

如何在Oracle中的字符串中查找精确的字符串匹配

技术问答 技术问答 215 人阅读 | 0 人回复 | 2023-09-14

我有一个oracle表,该表具有名为system_access的列,该列具有以下数据:6 D  `6 o& o8 \+ V* D) ~# G3 Z
Read Only, Write, read only, Admin+ n' P4 j) s& D6 ?* x3 `
Read, Write, read only, Admin. N/ w; m& w8 h* J/ q
Admin, Read Only (no), read only(see mgr), Admin
' x7 m/ r$ L; l4 X9 u) T基于上述示例数据,我不确定我的查询仅检索与“只读”和/或“只读”的确切单词匹配的记录# n" u/ L: M1 U: v
我不需要具有“只读(否)”,后接空格或方括号的记录,或“只读(请参阅mgr)”,其后或接续无空格和括号的记录。. F1 U9 z! e. v6 i) l$ N2 I: F
因此,根据以上示例数据,我只会返回两行,即:
+ U, `$ u6 z5 N# P; D8 f" \0 Y* h* ORead Only, Write, read only, Admin
' j; Z8 f& T- T8 A) A- @1 U# v, C0 TRead, Write, read only, Admin" S# p: i! \1 ^1 }8 z
如前所述,只有与字符串“ Read Only”或“ read only”完全匹配的记录
% B8 t3 t( f, B" J( t# n               
$ S5 p) Z) X) R, G" t/ `解决方案:) B; _0 e+ N0 `1 ?7 J
               
$ @% ?/ p; N! x; ^4 T
  \9 ?3 O6 }; u  H
5 x, ?9 M7 z7 \# O                有时在比较之前在字符串中添加一些内容很有用,然后每个元素都遵循相同的格式:
5 J2 ?' r) ^2 M' Y- ^, qwith testData as1 J6 R1 t# c7 f
(" z3 u8 s5 E$ e. O) T! W' }
  select 'Read Only, Write, read only, Admin' test from dual union all
4 \% O9 w& Y7 E* j' W9 {  select 'Read, Write, read only, Admin'  test from dual union all/ y; B6 Z: I; ~
  select 'Admin, Read Only (no), read only(see mgr), Admin' test from dual  V" h" c1 k3 v
)$ j* j) j& G" d1 m1 v# p2 P: g
select * from testData
6 W7 v2 L9 G4 @; Kwhere lower(test)||',' like '%read only,%';
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则