trabajados son segunda microsoft los letra ejemplos desde datos cuáles cuales comodines coincidencias cero buscar aprender sql postgresql

son - like sql server ejemplos



Comodín de PostgreSQL LIKE para cualquiera de una lista de palabras (4)

Tengo una lista simple de ~ 25 palabras. Tengo un campo varchar en PostgreSQL, digamos que la lista es [''foo'', ''bar'', ''baz''] . Quiero encontrar cualquier fila en mi mesa que tenga alguna de esas palabras. Esto funcionará, pero me gustaría algo más elegante.

select * from table where (lower(value) like ''%foo%'' or lower(value) like ''%bar%'' or lower(value) like ''%baz%'')


En realidad, hay un operador para eso en PostgreSQL:

SELECT * FROM table WHERE lower(value) ~~ ANY(''{%foo%,%bar%,%baz%}'');


PostgreSQL también admite expresiones regulares POSIX completas:

select * from table where value ~* ''foo|bar|baz'';

El ~* es para una coincidencia insensible a mayúsculas y minúsculas, ~ es sensible a mayúsculas y minúsculas.

Otra opción es usar ANY :

select * from table where value like any (array[''%foo%'', ''%bar%'', ''%baz%'']); select * from table where value ilike any (array[''%foo%'', ''%bar%'', ''%baz%'']);

Puede usar ANY con cualquier operador que genere un valor booleano. Sospecho que las opciones de expresiones regulares serían más rápidas, pero CUALQUIERA es una herramienta útil para tener en tu caja de herramientas.


Puede usar el operador SIMILAR TO Postgres, que admite alternancias, es decir,

select * from table where lower(value) similar to ''%(foo|bar|baz)%'';