varios values valores uso sentencia operador multiple ejemplos consultas clausula sql sql-server sql-like

values - Consulta SQL ''LIKE'' usando ''%'' donde los criterios de búsqueda contienen ''%''



sql like multiple values (8)

Debe escapar de él: en muchas bases de datos esto se hace precediéndolo con barra diagonal inversa, /% .

Así que abc convierte en abc/% .

Su lenguaje de programación tendrá una función específica de base de datos para hacer esto por usted. Por ejemplo, PHP tiene mysql_escape_string () para la MySQL datos MySQL .

Tengo una consulta SQL como a continuación.

Select * from table where name like ''%'' + search_criteria + ''%''

Si search_criteria = ''abc'', devolverá datos que contengan xxxabcxxxx cual está bien.

Pero si search_criteria = ''abc%'', todavía devolverá datos que contengan xxxabcxxx , lo que no debería ser el caso.

¿Cómo manejo esta situación?


Escape el signo de porcentaje /% para que sea parte de su valor de comparación.


La solución más fácil es prescindir del "me gusta" por completo:

Select * from table where charindex(search_criteria, name) > 0

Prefiero charindex sobre me gusta. Históricamente, tuvo un mejor desempeño, pero no estoy seguro de si ahora hay mucha diferencia.


Para escapar de un personaje en sql puedes usar ! :

EJEMPLO - UTILIZANDO PERSONAJES DE ESCAPE

Es importante entender cómo "Escapar caracteres" cuando se combina el patrón. Estos ejemplos tratan específicamente de los personajes que se escapan en Oracle.

Supongamos que desea buscar un carácter% o _ en la condición LIKE de SQL. Puedes hacer esto usando un personaje de Escape.

Tenga en cuenta que solo puede definir un carácter de escape como un solo carácter (longitud de 1).

Por ejemplo:

SELECT * FROM suppliers WHERE supplier_name LIKE ''!%'' escape ''!'';

Este ejemplo de condición SQL LIKE identifica el! El personaje como personaje de escape. Esta declaración devolverá a todos los proveedores cuyo nombre es%.

Aquí hay otro ejemplo más complicado que usa caracteres de escape en la condición SQL LIKE.

SELECT * FROM suppliers WHERE supplier_name LIKE ''H%!%'' escape ''!'';

Este ejemplo de condición SQL LIKE devuelve todos los proveedores cuyo nombre comienza con H y termina en%. Por ejemplo, devolvería un valor como ''Hola%''.

También puede utilizar el carácter de escape con el carácter _ en la condición SQL LIKE.

Por ejemplo:

SELECT * FROM suppliers WHERE supplier_name LIKE ''H%!_'' escape ''!'';

Este ejemplo de condición SQL LIKE devuelve todos los proveedores cuyo nombre comienza con H y termina en _. Por ejemplo, devolvería un valor como ''Hello_''.

Referencia: sql/like


Puede ser esta una ayuda :)

DECLARE @SearchCriteria VARCHAR(25) SET @SearchCriteria = ''employee'' IF CHARINDEX(''%'', @SearchCriteria) = 0 BEGIN SET @SearchCriteria = ''%'' + @SearchCriteria + ''%'' END SELECT * FROM Employee WHERE Name LIKE @SearchCriteria


Si desea que un símbolo % en search_criteria sea ​​tratado como un carácter literal en lugar de como un comodín, search_criteria a [%]

... where name like ''%'' + replace(search_criteria, ''%'', ''[%]'') + ''%''


Utilice una cláusula de escape:

select * from (select ''123abc456'' AS result from dual union all select ''123abc%456'' AS result from dual ) WHERE result LIKE ''%abc/%%'' escape ''/'

Resultado

123abc%456

Puedes configurar tu personaje de escape a lo que quieras. En este caso, el valor predeterminado ''/'. El ''/%'' escapado se convierte en un literal, el segundo ''%'' no se escapa, por lo que, nuevamente, comodín.

Ver Lista de caracteres especiales para la cláusula LIKE de SQL.


Select * from table where name like search_criteria

Si está esperando que el usuario agregue sus propios comodines ...