2009-12-16 7 views

risposta

22

Presumo si intende tutte le righe che corrispondono a "PDD" tranne quelli in cui "PDD" è all'inizio.

SELECT * FROM table WHERE column LIKE '_%pdd%'. 

Il "_" jolly in LIKE predicati significa "uno di carattere", equivalente a "." nelle espressioni regolari.

+0

Scusa ma no. questo NON funzionerà in casi come 'pdd hello pdd' perché il primissimo p corrisponde a' _' e il resto della stringa (incluso un altro '" pdd "') corrisponderà a '% pdd%'. l'OP non ha mai menzionato che la stringa "pdd" sarà sempre unica tra le stringhe, quindi le sue molteplici occorrenze, dove una di queste è all'inizio, faranno in modo che questa soluzione non funzioni. OP, considera di non accettare questa risposta (in quanto errata) e accettando quelle di quosoo o Marc. – DiegoDD

+0

@DiegoDD, questo è un buon punto, ho trascurato la possibilità che lo schema si ripetesse due volte. Questa è una vecchia domanda, sarei interessato a sentire l'OP su questo argomento. Ma dal momento che l'ha accettato, suppongo che abbia funzionato per i casi di cui aveva bisogno. –

+0

Sono d'accordo sul fatto che l'OP mio l'abbia trovato utile e non ha avuto problemi, ma dal momento che questo è un sito della comunità, è possibile modificare la risposta per dichiarare che non funzionerà in questo caso, poiché è probabile che altre persone trova la risposta (proprio come ho fatto io) e essere una vecchia domanda non lo rende meno utile o valido. Grazie per la risposta. – DiegoDD

0

Prova:

SELECT * FROM table WHERE column NOT LIKE 'pdd%' 
+1

L'OP sembra voler corrispondere a 'pdd', tranne all'inizio della colonna - questo non lo farà ... –

+0

leggi per comprensione –

5

Se ho capito la vostra esigenza in modo corretto ciò che serve è:

SELECT * FROM table WHERE column LIKE '%pdd_%' and column NOT LIKE 'pdd_%' 
4
SELECT * FROM table WHERE column LIKE '%pdd%' AND column NOT LIKE 'pdd%' 

è possibile ottimizzare la query a seconda di come spesso questi eventi sono nella tabella.

Problemi correlati