Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

2 Cara Mengembalikan Baris yang Hanya Mengandung Karakter Non-Alfanumerik di Oracle

Di bawah ini adalah dua metode untuk mengembalikan baris yang hanya berisi karakter non-alfanumerik di Oracle Database.

Karakter alfanumerik adalah karakter alfabet dan karakter numerik.

Contoh Data

Kami akan menggunakan data berikut untuk contoh kami:

CREATE TABLE t1 (
    c1 varchar(255) NULL
    );

INSERT INTO t1 (c1) 
    WITH c AS (
        SELECT 'Music' FROM DUAL UNION ALL
        SELECT 'Live Music' FROM DUAL UNION ALL
        SELECT 'Café' FROM DUAL UNION ALL
        SELECT 'Café Del Mar' FROM DUAL UNION ALL
        SELECT '100 Cafés' FROM DUAL UNION ALL
        SELECT '[email protected]' FROM DUAL UNION ALL
        SELECT '1 + 1' FROM DUAL UNION ALL
        SELECT '()' FROM DUAL UNION ALL
        SELECT '[email protected]#&()–[{}]:;'',?/*' FROM DUAL UNION ALL
        SELECT '`~$^+=<>“' FROM DUAL UNION ALL
        SELECT '$1.50' FROM DUAL UNION ALL
        SELECT 'Player 456' FROM DUAL UNION ALL
        SELECT '007' FROM DUAL UNION ALL
        SELECT 'é' FROM DUAL UNION ALL
        SELECT 'É' FROM DUAL UNION ALL
        SELECT 'é 123' FROM DUAL UNION ALL
        SELECT 'ø' FROM DUAL UNION ALL
        SELECT 'ø 123' FROM DUAL)
SELECT * FROM c;

SELECT c1 FROM t1;

Hasil:

Music
Live Music
Café
Café Del Mar
100 Cafés
[email protected]
1 + 1
()
[email protected]#&()–[{}]:;',?/*
`~$^+=<>“
$1.50
Player 456
007
é
É
é 123
ø
ø 123

Opsi 1:Bandingkan dengan [:alnum:]

Kita dapat menggunakan REGEXP_LIKE() Oracle berfungsi untuk membandingkan nilai dengan ekspresi reguler, lalu meniadakannya dengan NOT operator.

Kemampuan ekspresi reguler Oracle mencakup dukungan untuk kelas karakter POSIX. Oleh karena itu, kita dapat menggunakan [:alnum:] Kelas karakter POSIX dalam ekspresi reguler kami untuk menemukan baris yang berisi karakter non-alfanumerik.

SELECT c1 FROM t1 
WHERE NOT REGEXP_LIKE(c1, '[[:alnum:]]');

Hasil:

()
[email protected]#&()–[{}]:;',?/*
`~$^+=<>“

Itu hanya mengembalikan baris yang berisi karakter non-alfanumerik saja. Jika baris berisi karakter alfanumerik dan non-alfanumerik, baris tidak akan dikembalikan.

Opsi 2:Tentukan Rentang Karakter

Cara lain untuk melakukannya adalah dengan menentukan rentang karakter dalam ekspresi reguler Anda.

Contoh:

SELECT c1 FROM t1 
WHERE NOT REGEXP_LIKE(c1, '[A-Za-z0-9]');

Hasil:

()
[email protected]#&()–[{}]:;',?/*
`~$^+=<>“
é
É
ø

Dalam hal ini, rentang pengecualian saya tidak mencakup karakter alfanumerik seperti é , É , dan ø , dan hasilnya bukan representasi sebenarnya dari karakter non-alfanumerik.

Berikut ini contoh perluasan rentang untuk mengecualikan karakter tersebut dari output:

SELECT c1 FROM t1 
WHERE NOT REGEXP_LIKE(c1, '[A-Za-zÀ-Þß-ÿ0-9]');

Hasil:

()
[email protected]#&()–[{}]:;',?/*
`~$^+=<>“

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle CLOB tidak dapat memasukkan lebih dari 4000 karakter?

  2. pilih baris TOP N dari tabel

  3. Bagaimana cara UNZIP File di PL/SQL?

  4. Rata-rata tanggal di Oracle sql

  5. Cara Mengganti Baris Baru di Oracle