2012-02-15 9 views
8

¿Podemos usar "NOT LIKE '%abc%'" justo enfrente de LIKE '%abc%'? intenté y obtuve algunos resultados pero no parezco correcto !!¿Podemos utilizar "NO ME GUSTA" en sql

¿Hay algo similar a regex in SQL.

Ej:

i hae una mesa con 3 campo.

id name address 
1 xyz 1234 abcd 
2 abc nomans land 
3 omg #123 new-york 
3 nom $123 &7up 

¿Puedo ir a buscar la dirección ** con caracteres especiales con cabo la comprobación de cada carácter especial de uno en uno. Cómo

+1

¿La existencia de la etiqueta Db2 significa ** ¿Hay expresiones regulares en DB2 **? – Oybek

+0

:-) estoy usando db2 ... pero la pregunta es sobre sql general! – zod

+0

Al buscar en Google descubrí que incluso el servidor sql tiene algo de apoyo. Pero no es ampliamente utilizado. La búsqueda de filas Regex es costosa. – Oybek

Respuesta

5

Claro, mira here. También NO ME GUSTA es compatible.

+1

Solo para completar la respuesta, [Pregunta relacionada] (http://stackoverflow.com/questions/4763757/regular-expressions-in-db2-sql); – Oybek

+0

@Oybek - Gracias. –

+0

Bienvenido =)) – Oybek

4

En SQL Server. si quería direcciones que contenían caracteres que no sean alfanuméricos y espacios:

address LIKE '%[^0-9a-zA-Z ]%'; 

notar el carácter ^ significa "cualquier carácter individual no está dentro del rango especificado". No estoy seguro si algo muy similar es posible en DB2.

1

en DB2 (versión 9.7.900.250), he especificado éxito "no le gusta" de esta manera:

select * from orders 
where not(orders.order_number like 'S%') 

Esto muestra todos los pedidos en el orden # no se inicia con una "S" de capital.

1

No se dio ninguna descripción de lo que se "intentó y obtuvo algún resultado pero no parece correcto". con respecto a la consulta del Sujeto, pero en la revisión de los datos dados y los dos predicados del PO, considere lo siguiente; Observando el secundario regex consulta está aparentemente ya ha respondido y aceptado, por lo que es ignorado en esta respuesta:

with 
    xmp (id, name, address) as 
(values (1 , 'xyz' , '1234 abcd ' ) 
     , (2 , 'abc' , 'nomans land' ) 
     , (3 , 'omg' , '#123 new-york') 
     , (3 , 'nom' , '$123 &7up' ) 
) 
select id 
from xmp 
where address NOT LIKE '%abc%' 

La consulta DB2 anterior debe producir el conjunto {(2), (3), (3)} ; es decir, incluye todas menos la primera fila. Cambiar el predicado de address NOT LIKE '%abc%' a address LIKE '%abc%' debe producir el conjunto {(1)}; es decir, incluye solo la primera fila. La especificación del predicado en cualquier forma address NOT LIKE '%abc%' o NOT (address LIKE '%abc%') debe arrojar el mismo resultado; son solicitudes lógicamente idénticas.

Cuestiones relacionadas