我的表中有一个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 '%%%';
答案 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