2009-12-16 7 views

Respuesta

22

supongo que te refieres todas las filas que coinciden con "PDD", excepto aquellos en los que "PDD" está al principio.

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

El "_" comodín en LIKE predicados significa "uno de cualquier carácter", equivalente a "." en las expresiones regulares.

+0

Lo siento pero no. esto NO funcionará en casos como 'pdd hello pdd' porque la primera p coincide con' _' y el resto de la cadena (incluido otro '" pdd "') coincidirá con '% pdd%'. el OP nunca mencionó que la cadena "pdd" siempre será única entre la cadena, por lo que múltiples ocurrencias de la misma, donde una de ellas es al principio, hará que esta solución no funcione. OP, considere no aceptar esta respuesta (ya que es incorrecta) y aceptar las de quosoo o Marc. – DiegoDD

+0

@DiegoDD, ese es un buen punto, pasé por alto la posibilidad de que el patrón ocurra dos veces. Esta es una vieja pregunta, me interesará saber de la OP sobre este asunto. Pero desde que lo aceptó, supongo que funcionó para los casos que necesitaba. –

+0

Estoy de acuerdo con el hecho de que OP me pareció útil y no tuve ningún problema, pero como se trata de un sitio de la comunidad, puede editar la respuesta para indicar que no funcionaría en ese caso, ya que es probable que otras personas encuentre la respuesta (igual que yo), y ser una pregunta antigua no la hace menos útil o válida. Gracias por la respuesta. – DiegoDD

0

Probar:

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

El OP parece querer coincidir con 'pdd', excepto al comienzo de la columna; esto no hará eso ... –

+0

leído para comprensión –

5

Si entiendo su requerimiento correctamente lo que necesita es:

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%' 

puede optimizar la consulta en función de la frecuencia con estas apariciones se da en la tabla.

Cuestiones relacionadas