Domanda

Ho bisogno di un mezzo per verificare se una stringa ha il seguente modello esatto al suo interno, cioè:

(P)

Esempi in cui ciò sarebbe vero è:

"Test System (P)"

Non sono sicuro di come verificare la presenza di casi in cui la stringa che non ha "(P)", ovvero:

"Test System (GUI for Prof)" - in questo caso, questo sarebbe falso ma sto usando REGEXP_LIKE e in realtà restituisce VERO.

Voglio solo che ritorni True quando la stringa esatta di '(P)' esiste all'interno della stringa di ricerca.

Qualsiasi aiuto per raggiungere questo obiettivo utilizzando PL / SQL sarebbe eccezionale.

Grazie.

È stato utile?

Soluzione

Usa:

REGEX_LIKE(t.column, '\(P\)')

Regular-Expressions.info è un'ottima risorsa.

Il normale INSTR funzionerebbe (Oracle 8i +):

WHERE INSTR(t.column, '(P)') > 0 --column contains '(P)'

WHERE INSTR(t.column, '(P)') = 0 --column does NOT contain '(P)'

Anche LIKE funziona:

WHERE t.column LIKE '%(P)%' --column contains '(P)'

WHERE t.column NOT LIKE '%(P)%' --column does NOT contain '(P)'

Altri suggerimenti

Prova come :

WHERE thing like '%(P)%';

Vorrei attenermi alle funzioni REGEXP_ * , dato che dovrai comunque esercitarle e sapere che le espressioni regolari ti serviranno bene.

Sono tutte buone risposte, tranne un refuso nella prima risposta di Ponies. :

L'errore di battitura è che manca una P da REGEX_LIKE:

Scritto: REGEX_LIKE (t.column, '\ (P \)')

Corretto: REGEXP_LIKE (T.COLUMN, '\ (P \)')

"\" è un carattere di escape che dice "non cercare il significato simbolico del personaggio successivo, ma cercare il carattere letterale stesso." "

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top