我必须找到所有记录都有前导或尾随空格以及带有下划线(_)的记录,在带有列的表的字符串之间有前导或尾随空格,如下所示: -
注意: - *表示空格。
place_id place_name
----------- --------------------
1 *Bilaspur
2 Jaipur*
3 Madhya*Pradesh
4 State*of*Tamilnaddu
5 **Kangra
6 Chandigrah**
7 Himachal_*Pradesh
8 Utar*_Pradesh
从上表使用正则表达式oracle查询我必须找出除了地址id 3和4之外的所有记录。
答案 0 :(得分:2)
如果表格的名称为A
,那么您可能需要尝试:
Select * from A where REGEXP_LIKE(place_name,'^\s|\s$|\s_|_\s','i')
<强> Click for regex demo 强>
<强>解释强>
^\s
- 在行开头后匹配空格|
- 或\s$
- 匹配行尾之前的空格|
- 或\s_
- 匹配_
|
- 或_\s
- 匹配_
答案 1 :(得分:2)
您不需要正则表达式:
SELECT *
FROM table_name
WHERE place_name LIKE ' %'
OR place_name LIKE '% '
OR place_name LIKE '% \_%' ESCAPE '\'
OR place_name LIKE '%\_ %' ESCAPE '\';
答案 2 :(得分:1)
又一个选择:
SQL> with test (place_id, place_name) as
2 (select 1, ' Bilaspur' from dual union
3 select 2, 'Jaipur ' from dual union
4 select 3, 'Madhya Pradesh' from dual union
5 select 4, 'State of Tamilnaddu' from dual union
6 select 5, ' Kangra' from dual union
7 select 6, 'Chandigrah ' from dual union
8 select 7, 'Himachal_ Pradesh' from dual union
9 select 8, 'Utar _Pradesh' from dual
10 )
11 select * from test
12 where regexp_like(place_name, '^ | $|_ | _');
PLACE_ID PLACE_NAME
---------- -------------------
1 Bilaspur
2 Jaipur
5 Kangra
6 Chandigrah
7 Himachal_ Pradesh
8 Utar _Pradesh
6 rows selected.
SQL>
这样的表达式返回值
^
或|
$
或|
_