如何在Oracle SQL中查找col包含字母,数字或特殊字符(连字符,撇号和空格除外)的行

我必须找到一个名称,例如:Robert @ jr23(必须有字母,任何特殊字符或数字,但连字符(-),撇号(')和空格除外)。

我正在做以下事情:

select * from test where REGEXP_LIKE(trim(NAME_1),'[^- '']')

但是我没有得到正确的结果。

需要匹配:

Kevin#123
bob@jr
mike$dr

需要排除:

Alex-jr
Robert'jr
Brian jr
iCMS 回答:如何在Oracle SQL中查找col包含字母,数字或特殊字符(连字符,撇号和空格除外)的行

您需要使用not并使用与要排除的值相匹配的模式。否则,您将匹配包含所有不在排除列表中的任何字符的字符串。

select column_value
from   ora_mining_varchar2_nt
       ( 'Kevin#123','bob@jr','mike$dr','Alex-jr','Robert''jr','Brian jr','A!' )
where  1=1
and    not regexp_like(column_value,'[- '']')
and    regexp_like
       (column_value,'([A-Z0-9]+[^A-Z0-9])|([^A-Z0-9]+[A-Z0-9])','i') ;

编辑:添加了regex_like条件,以确保值包含字母或数字和“特殊字符”,此处的字符既不是字母,数字也不是空格,'或{ {1}}。

,

一种选择是用Hello替换所有有效的内容,而剩下的是无效

Property 'saySomething' does not exist on type 'B'.(2339)

我对您实际上想要得到的结果感到困惑。以下是一些示例,显示了此类正则表达式的结果;您想获得哪些ID?

NULL

您的一条评论说:

选择一个必须包含特殊字符或数字(空格,连字符和撇号除外)的客户名称

表示数字和特殊字符应被视为“相等”。如果是这样,这有帮助吗?

SQL> with test (col) as
  2    (select 'Robert@jr23' from dual union all
  3     select 'Kevin#123'   from dual union all
  4     select 'bob@jr'      from dual union all
  5     select 'mike$dr'     from dual union all
  6     select 'Alex-jr'     from dual union all
  7     select 'Robert''jr'  from dual union all
  8     select 'Brian jr'    from dual
  9    )
 10  select col
 11  From test
 12  where regexp_replace(col,'[[:alpha:]]|[[:digit:]]|-|''',null) is not null;

COL
-----------
Robert@jr23
Kevin#123
bob@jr
mike$dr
Brian jr

SQL>
,

您可以使用以下查询来包含除space,- and '以外的所有特殊字符

SQL> with tbl(name) as (
  2        select 'Kevin#123'          from dual union
  3        select 'bob@jr' from dual union
  4        select 'mike$dr' from dual union
  5        select 'Alex-jr'         from dual union
  6    select 'Brian jr'         from dual union
  7    select 'Brian)jr'         from dual union
  8        select 'Robert''jr'  from dual
  9      )
 10      select *
 11      from tbl
 12      where regexp_like(name,'[^[a-z]|[A-Z]|[:space:]|[:cntrl:]|/]')
 13  and  not regexp_like(name,'[- '']');

NAME
---------
Brian)jr -- see this is included
Kevin#123
bob@jr
mike$dr

SQL>
本文链接:https://www.f2er.com/1916661.html

大家都在问