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

Apa perbedaan antara (*) dan .* di regexp?

Tampaknya, di Oracle 11, * dan + pola (tanpa ada yang mendahuluinya) menghasilkan kecocokan dengan lebar nol. Jadi (*) dan (+) sedang menangkap grup () berisi pola lebar nol * atau + masing-masing.

Semua kueri ini menghasilkan satu baris:

SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '*' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '(*)' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '^*' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '^(*)' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '*1' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '+' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '(+)' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '^+' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '^(+)' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '+1' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '^+1' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '+1$' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '^+1$' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '()' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '12', '1(*)2' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '12', '1(+)2' );

Kueri ini tidak mengembalikan baris apa pun:

SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '*2' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '^*$' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', '^+$' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '12', '11(*)2' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '12', '11(+)2' );

Juga, mencocokkan pola apa pun dengan NULL atau string terhadap NULL pola tidak akan mengembalikan baris apa pun:

SELECT * FROM DUAL WHERE REGEXP_LIKE( NULL, '*' );
SELECT * FROM DUAL WHERE REGEXP_LIKE( '1', NULL );

Menggunakan REGEXP_SUBSTR :

SELECT REGEXP_SUBSTR( '1', '+' ) FROM DUAL;

Menampilkan satu baris yang berisi NULL .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-24550:sinyal diterima:[si_signo=6] error

  2. ORACLE Cara menggunakan spool dengan lokasi spool dinamis

  3. Kapan Oracle mengindeks nilai kolom nol?

  4. Masalah Oracle dengan pelaporan SQL

  5. Skrip SQL*Plus dieksekusi dua kali