SQL提取特殊字符Oracle 11g

时间:2018-10-31 14:12:29

标签: sql regex oracle validation

我有一个要求,我需要获取具有特殊字符(包括少数例外)的完整数据。我尝试使用REGEXP_LIKE (STATE,'[^A-Za-z0-9, ]') 但无法得出结果。

1)以下是不能为空白或具有特殊字符的关键字段。

a。名称1

b。名称2

c。联系人1

d。地址1

e。地址2

f。城市

g ST

h。邮编

2)供应商不允许的特殊字符包括

, . / ? < > ; : ‘ “ [ ] \ | { } ! @ # $ % ^ & * ( ) - _ = +

异常#1-Name1,Name2,Contact1字段允许跟随- ‘ .

异常2-地址1,地址2允许跟随# /

选择查询:

 select Name1, Name2, Contact1, Address1, Address2, City, STATE, Zip 
 from tableA

1 个答案:

答案 0 :(得分:0)

您要尝试用特殊字符查找所有行,对吗?试试这个。

select Name1, Name2, Contact1, Address1, Address2, City, STATE, Zip 
 from tableA
 where regexp_instr(name1 || name2 || contact1, '[^.[:alnum:], -'']') > 0
   or regexp_instr(address1 || address2, '[^[:alnum:], #/]') > 0
   or regexp_instr(city || state || zip, '[^[:alnum:], ]') > 0

我建议在这里使用[:alnum:],因为if you have NLS_SORT set, A-Z can behave unpredictably。如果您不必担心,A-Za-z0-9的工作原理与之类似。