2012-11-09 37 views
2

我的表中有一個字段,它是一個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 '%%%'; 

回答

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 
+0

這是否意味着我必須爲表中的每個值寫一個select語句,就像你在2-6行中做的那樣?我有成千上萬的行(精確到64000)。 – Susie

+0

這只是一個例子。使用代碼從選擇其中x是您的表名和str列 – sufleR

+2

@javaStudent - 您可以直接查詢任何表(可以完全擺脫「WITH」子句或用實際表中的查詢替換我寫的查詢) 。由於我們無法訪問表或數據,因此顯示查詢工作的最簡單方法是將「WITH」子查詢集合在一起,手動組合您實際給我們提供的數據。 –

相關問題