Sql 仅选择三个字符长度的字母字符串
我的表中有一个字段是varchar,包含字母、数字和混合字母数字值 我只想从该字段中选择长度为3个字符且仅为字母的值 我正在使用oracle 样本数据:Sql 仅选择三个字符长度的字母字符串,sql,regex,database,oracle,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个字符长的结果,它只返回所有内容:
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 '%%%';
您可以像函数一样使用
regexp\u
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
这是否意味着我必须为表中的每个值编写select语句,就像上面第2-6行所做的那样?我有数千行(准确地说是64000行)。这只是一个例子。使用“选择”中的代码,其中x是您的表名,str是您的column@javaStudent-您可以直接查询您拥有的任何表(要么完全摆脱WITH
子句,要么用针对实际表的查询替换我编写的查询)。由于我们无法访问您的表或数据,显示查询工作的最简单方法是将与子查询组合在一起,手动组合您实际提供给我们的数据。谢谢。我花了将近两个小时试图弄明白这一点。