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

Sus*_*sie 2 regex sql database oracle

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

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

我正在使用oracle.

样本数据:

AAA
BBB
12345
CCC25
DDDDD
Run Code Online (Sandbox Code Playgroud)

select语句应该只返回:

AAA
BBB
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容,但没有奏效.这没有任何回报.

select name from MyTable where name like '[a-Z][a-Z][a-Z]';
Run Code Online (Sandbox Code Playgroud)

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

select name from MyTable where name like '%%%';
Run Code Online (Sandbox Code Playgroud)

Jus*_*ave 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
Run Code Online (Sandbox Code Playgroud)

  • @javaStudent - 你可以直接查询你拥有的任何表(要么完全摆脱`WITH`子句,要么用我对实际表的查询替换我写的查询).由于我们无法访问您的表或您的数据,因此显示查询工作的最简单方法是将一个`WITH`子查询放在一起,该子查询手动汇编您实际提供给我们的数据. (2认同)