sql >> Database >  >> RDS >> Oracle

Wat is het verschil tussen (*) en .* in regexp?

Het lijkt erop dat in Oracle 11 de * en + patronen (met niets dat eraan voorafgaat) genereren overeenkomsten met een breedte van nul. Dus (*) en (+) zijn groepen aan het vastleggen () met de nulbreedte-patronen * of + respectievelijk.

Al deze zoekopdrachten retourneren een rij:

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' );

Deze zoekopdrachten retourneren geen rijen:

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' );

Ook het matchen van elk patroon tegen NULL of een string tegen een NULL patroon retourneert geen rijen:

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

REGEXP_SUBSTR gebruiken :

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

Voert een enkele rij uit met NULL .



  1. Hoe iif() werkt in SQLite

  2. Een PHP-array in kolommen sorteren

  3. com.microsoft.sqlserver.jdbc.SQLServerException:de TCP/IP-verbinding met de host localhost, poort 1433 is mislukt

  4. Bestel versies als nummers