2008-12-11 36 views
5

¿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í.Clasificación SQL y guiones

El acceso y la clasificación predeterminada GridView parece ignorar el hypen en cadenas.

Respuesta

15

he aprendido algo nuevo, al igual que usted, así

Creo que la diferencia entre un "Cadena Ordenar" contra un "Palabra Ordenar" (ignora guión) diferencia

muestra entre PALABRA especie y tipo STRING 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 SQL intercalación "SQL_Latin1_General_CP1_CI_AS", el no Unicode cadena 'ac' es menor que la cadena 'ab' porque el guión ("-") se clasifica 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 ordenación Unicode utilizan una "palabra ordenar "que ignora el guión".

me di algunos ejemplos de código también se puede jugar con el INTERCALAR para encontrar el que trabajar con su 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 
+0

funcionaba muy bien, gracias! – tidge

Cuestiones relacionadas