选择仅字母,长度为三个字符的字符串

时间:2012-11-09 21:05:19

标签: sql regex database oracle

我的表中有一个varchar字段,包含字母,数字和混合字母数字值。

我想只选择该字段中长度为3个字符且仅按字母顺序排列的值。

我正在使用oracle。

示例数据:

AAA
BBB
12345
CCC25
DDDDD

select语句应该只返回:

AAA
BBB

我尝试了以下操作但没有用。这没有任何回报。

select name from MyTable where name like '[a-Z][a-Z][a-Z]';

然后我尝试了下面的想法,它会返回所有3个字符长的结果,它只是返回了所有内容:

select name from MyTable where name like '%%%';

1 个答案:

答案 0 :(得分:7)

您可以使用regexp_like功能

SQL> with x as (
  2    select 'aaa' str from dual union all
  3    select 'bbb' from dual union all
  4    select '12345' from dual union all
  5    select 'CCC25' from dual union all
  6    select 'DDDDD' from dual
  7  )
  8  select *
  9    from x
 10   where regexp_like( str, '^[[:alpha:]]{3}$' );

STR
-----
aaa
bbb