por - cuales son los comodines en sql
Lista de caracteres especiales para la cláusula SQL LIKE (5)
Posible respuesta para SQL Server
Interesante Acabo de ejecutar una prueba usando LinqPad con SQL Server, que debería estar ejecutando Linq a SQL debajo y genera la siguiente instrucción SQL.
Registros. Donde (r => r.Name.Contains ("lkjwer --_ ~ []"))
-- Region Parameters
DECLARE @p0 VarChar(1000) = ''%lkjwer--~_~~~[]%''
-- EndRegion
SELECT [t0].[ID], [t0].[Name]
FROM [RECORDS] AS [t0]
WHERE [t0].[Name] LIKE @p0 ESCAPE ''~''
Por lo tanto, aún no lo he probado, pero parece que potencialmente la palabra clave ESCAPE ''~''
puede permitir el escape automático de una cadena para su uso dentro de una expresión similar.
¿Cuál es la lista completa de todos los caracteres especiales para un SQL (estoy interesado en SQL Server pero los demás también serían buenos) Cláusula LIKE?
P.ej
SELECT Name FROM Person WHERE Name LIKE ''%Jon%''
- %
- _
- [especificador] Ej. [az]
- [^ especificador]
- Cláusula ESCAPE Eg% 30! %% ''ESCAPE''! '' evaluará 30% como verdadero
- ''Los personajes deben ser escapados con'' Por ejemplo, se convierten en ellos ''
-
%
- Cualquier cadena de cero o más caracteres. -
_
- Cualquier personaje individual - Cláusula ESCAPE Eg% 30! %% ''ESCAPE''! '' evaluará 30% como verdadero
-
%
- Cualquier cadena de cero o más caracteres. -
_
- Cualquier personaje individual - Cláusula ESCAPE Eg% 30! %% ''ESCAPE''! '' evaluará 30% como verdadero
Sybase
- %
- _
- [especificador] Ej. [az]
- [^ especificador]
-
%
- Cualquier cadena de cero o más caracteres. _
- Cualquier personaje individualGuía de referencia aquí [PDF]
-
%
- Cualquier cadena de cero o más caracteres. -
_
- Cualquier personaje individual
- %
- _
- Un carácter ESCAPE solo si está especificado .
PostgreSQL también tiene el operador SIMILAR TO
que agrega lo siguiente:
-
[specifier]
-
[^specifier]
-
|
- cualquiera de las dos alternativas -
*
- repetición del elemento anterior cero o más veces. -
+
- repetición del ítem anterior una o más veces. -
()
- elementos de grupo juntos
La idea es hacer de esta una comunidad Wiki que pueda convertirse en una "ventanilla única" para esto.
Debe agregar que debe agregar un extra ''para escapar de un exising'' en SQL Server:
smith''s -> smith ''s
Para SQL Server, desde http://msdn.microsoft.com/en-us/library/ms179859.aspx :
% Cualquier cadena de cero o más caracteres.
WHERE title LIKE ''%computer%''
encuentra todos los títulos de libros con la palabra ''computadora'' en cualquier parte del título del libro._ Cualquier personaje individual.
WHERE au_fname LIKE ''_ean''
encuentra todos los nombres de cuatro letras que terminan con ean (Dean, Sean, etc.).[] Cualquier carácter individual dentro del rango especificado ([af]) o set ([abcdef]).
WHERE au_lname LIKE ''[CP]arsen''
encuentra los apellidos de los autores que terminan en arsen y comienzan con cualquier carácter individual entre C y P, por ejemplo Carsen, Larsen, Karsen, y así sucesivamente. En las búsquedas de rango, los caracteres incluidos en el rango pueden variar según las reglas de clasificación de la intercalación.[^] Cualquier carácter que no se encuentre dentro del rango especificado ([^ af]) o set ([^ abcdef]).
WHERE au_lname LIKE ''de[^l]%''
todos los apellidos del autor que comienzan con de y donde la letra siguiente no es l.
- %
- _
- un carácter ESCAPE solo si está especificado .
Es decepcionante que muchas bases de datos no se apeguen a las reglas estándar y agreguen caracteres adicionales, o que habiliten ESCAPE incorrectamente con un valor predeterminado de ''/' cuando falta. ¡Como si ya no tuviéramos suficientes problemas con ''/'!
Es imposible escribir código independiente de DBMS aquí, porque no sabes de qué personajes vas a tener que escapar, y el estándar dice que no puedes escapar de cosas que no necesitan escaparse. (Consulte la sección 8.5 / Reglas generales / 3.a.ii).
Gracias SQL! gnnn
Sybase:
% : Matches any string of zero or more characters.
_ : Matches a single character.
[specifier] : Brackets enclose ranges or sets, such as [a-f]
or [abcdef].Specifier can take two forms:
rangespec1-rangespec2:
rangespec1 indicates the start of a range of characters.
- is a special character, indicating a range.
rangespec2 indicates the end of a range of characters.
set:
can be composed of any discrete set of values, in any
order, such as [a2bR].The range [a-f], and the
sets [abcdef] and [fcbdae] return the same
set of values.
Specifiers are case-sensitive.
[^specifier] : A caret (^) preceding a specifier indicates
non-inclusion. [^a-f] means "not in the range
a-f"; [^a2bR] means "not a, 2, b, or R."