sql-server-2005 - number - mysql order alphanumeric
Clasificación SQL y guiones (1)
Aprendí algo nuevo, igual que tú también
Creo que la diferencia está entre " Clases de cadenas " y " Clasificación de palabras " (ignora el guión)
Diferencia de muestra entre WORD sort y STRING sort http://andrusdevelopment.blogspot.com/2007/10/string-sort-vs-word-sort-in-net.html
De Microsoft http://support.microsoft.com/kb/322112
Por ejemplo, si está utilizando la intercalación SQL "SQL_Latin1_General_CP1_CI_AS", la cadena no-Unicode ''ac'' es menor que la cadena ''ab'' porque el guión ("-") está ordenado como un carácter separado que viene antes de "b" . Sin embargo, si convierte estas cadenas a Unicode y realiza la misma comparación, la cadena Unicode N''a-c ''se considera que es mayor que N''ab'' porque las reglas de clasificación Unicode usan un "orden de palabras" que ignora el guión .
Hice un código de ejemplo. También puedes jugar con el COLLATE para encontrar el que trabaje con tu clasificación.
DECLARE @test TABLE
(string VARCHAR(50))
INSERT INTO @test SELECT ''co-op''
INSERT INTO @test SELECT ''co op''
INSERT INTO @test SELECT ''co_op''
SELECT * FROM @test ORDER BY string --COLLATE SQL_Latin1_General_Cp1_CI_AS
--co op
--co-op
--co_op
SELECT * FROM @test ORDER BY CAST(string AS NVARCHAR(50)) --COLLATE SQL_Latin1_General_Cp1_CI_AS
--co op
--co_op
--co-op
¿Hay alguna manera de ordenar fácilmente SQL Server 2005 mientras se ignoran los guiones en un campo de cadena? Actualmente tengo que hacer un REEMPLAZO (nombre de campo, ''-'', '''') o una función para eliminar el guión en la cláusula de ordenación. Esperaba que hubiera una bandera que pudiera establecer en la parte superior del procedimiento almacenado o algo así.
El acceso y la clasificación predeterminada de GridView parece ignorar el hypen en cadenas.