2009-09-24 12 views

Odpowiedz

64

Spróbuj kod:

SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$' 

Daje to pewność, że wszystkie znaki mecz.

+0

Okey to zrobić poprawnie, ale nie pokazuje przestrzeń, w tym polu danych. Jak uzyskać miejsce, w tym pole danych według tego zapytania. –

+2

@ Md.MahabuburRahman: Całe puste miejsce między '9' a'] ':' '^ [A-Za-z0-9] + $' ' –

+0

jest wydajne? Pamiętam, że robiłem to z isnumeric na ostatniej postaci. to jest interesujące. dzięki wybierz nazwę od birt \t gdzie isnumeric (PRAWO (imię, 1)) = 1 – chungtinhlakho

3

Spróbuj tego:

REGEXP '^[a-z0-9]+$' 

Jak regexp nie jest uwzględniana wielkość liter, z wyjątkiem pól binarnych.

6

Twoje zdanie pasuje do dowolnego ciągu, który zawiera literę lub cyfrę w dowolnym miejscu, nawet jeśli zawiera inne znaki niealfanumeryczne. Spróbuj tego:

SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$'; 

^ i $ wymaga cały ciąg dopasować, a nie tylko dowolne jego części, a + szuka 1 lub więcej znaków alphanumberic.

Można również użyć nazwie klasę postaci, jeśli wolisz:

SELECT * FROM table WHERE column REGEXP '^[[:alnum:]]+$'; 
-5

Zmiana REGEXP do Like

SELECT * FROM table_name WHERE column_name like '%[^a-zA-Z0-9]%' 

ten działa dobrze

0

Istnieje również to:

select m from table where not regexp_like(m, '^[0-9]\d+$') 

, który wybiera wiersze zawierające znaki z żądanej kolumny (która jest m w przykładzie, ale można zmienić).

Większość kombinacji nie działa poprawnie na platformach Oracle, ale tak się dzieje. Udostępnianie na przyszłość.

-1

Spróbuj

select count(*) from table where cast(col as double) is null; 
+0

Jak to zadziała, jeśli 'col' to' 'ABC''? – ebyrob

Powiązane problemy