starting - sql wildcard number
Operador SQL ''Me gusta'' y ''aa'' (3)
select ''match!'' where ''teliaa'' like ''%telia%''
da ''partido''! como salida en mi sql-2008 (SP1) 10.0.2531.0 (x64)
no puedo responder tu pregunta ...
Nos hemos topado con un problema muy extraño en una de nuestras aplicaciones. El motor de búsqueda utiliza un procedimiento almacenado para comparar un grupo de filtros. Sin embargo, cuando se inserta un tipo específico de cadena, el servidor sql (2005) se comporta de forma muy extraña. He aislado el problema a lo siguiente:
select ''match!'' where ''teliaa'' like ''%telia%''
La recopilación es IC noruega danesa y tenemos caracteres que significan lo mismo. Esto incluye ''aa'' que también significa ''å''.
¿Alguien puede explicar por qué la declaración anterior no da ''coincidencia''?
La intercalación no coincidirá automáticamente "aa" con "å".
Se asegurará de que "å" esté ordenada correctamente y algunas otras cosas, pero no las sustituirá . Lo mismo aplica "ss" vs "ß" en alemán, por ejemplo
Tendría que limpiar los datos de una forma u otra.
SELECT REPLACE (''teliå'', ''å'', ''aa''), /* ...or */REPLACE (''teliaa'', ''aa'', ''å'')
Editar, mayo de 2013
Supongo que no coincide con aa
en esa colación. Sin embargo, se ordena correctamente
DECLARE @foo TABLE (bar varchar(2))
INSERT @foo VALUES (''Ab''),(''Aa''),(''aa''), (''å''), (''Za'');
SELECT * FROM @foo ORDER BY bar COLLATE Danish_Norwegian_CI_AS;
SELECT * FROM @foo WHERE bar COLLATE Danish_Norwegian_CI_AS = ''Aa'';
SELECT * FROM @foo WHERE bar COLLATE Danish_Norwegian_CI_AS = ''a'';
SELECT * FROM @foo WHERE bar COLLATE Danish_Norwegian_CI_AS = ''å'';
La intercalación es la colección de reglas para comparar caracteres, más útil para la clasificación. Algunos dicen que solo afecta la clasificación, esto no es del todo correcto. De https://technet.microsoft.com/en-us/library/aa174903%28v=sql.80%29.aspx
Una intercalación de SQL Server define cómo el motor de la base de datos almacena y opera en caracteres y datos Unicode.
Como ejemplo, en las intercalaciones insensibles a los acentos Danish_Norwegian coincide con ''aa'' con ''å''. Los nombres que comienzan con ''aa'' se ordenan junto con nombres que comienzan con ''å''. Sin embargo, también afecta las comparaciones y el operador LIKE. Aquí hay algunas cadenas de consulta que ilustran esto.
select ''match!'' where ''teliaa'' collate Latin1_General_100_CI_AI like ''%telia%'' --yields "match!"
select ''match!'' where ''teliaa'' collate Latin1_General_100_CI_AS like ''%telia%'' --yields "match!"
select ''match!'' where ''teliaa'' collate Latin1_General_100_CS_AI like ''%telia%'' --yields "match!"
select ''match!'' where ''teliaa'' collate Latin1_General_100_CS_AS like ''%telia%'' --yields "match!"
select ''match!'' where ''teliaa'' collate Danish_Norwegian_CI_AI like ''%telia%'' --no rows
select ''match!'' where ''teliaa'' collate Danish_Norwegian_CI_AS like ''%telia%'' --no rows
select ''match!'' where ''teliaa'' collate Danish_Norwegian_CS_AI like ''%telia%'' --no rows
select ''match!'' where ''teliaa'' collate Danish_Norwegian_CS_AS like ''%telia%'' --no rows
select ''match!'' where ''teliaa'' collate Danish_Norwegian_CI_AI like ''%å%'' --yields "match!"
select ''match!'' where ''teliaa'' collate Danish_Norwegian_CI_AS like ''%å%'' --no rows
select ''match!'' where ''teliaa'' collate Danish_Norwegian_CS_AI like ''%å%'' --yields "match!"
select ''match!'' where ''teliaa'' collate Danish_Norwegian_CS_AS like ''%å%'' --no rows
Dependiendo de su necesidad, si necesita hacer coincidir ''aa'' con ''å'', tratándolos igual, luego seleccione una intercalación que admita esto en su consulta o almacén de datos / columnas. De lo contrario, seleccione una intercalación como Latin1_General_100_CI_AI.