Hola,
Necesito ordenar por un campo definido como nvarchar(400) pero sin tener en
cuenta los posibles caracteres "raros" del principio.
O sea,
¿B?
A
se debe ordenar como A, ¿B? (en una ordenación normal, el caracter '¿' vá
antes de la 'A')
Lo puedo hacer añadiendo una clausula
Order By replace(memArticle, '¿','')
Y me lo ordena bien.
el problema, es que tengo un select de esta forma:
select
identity(int) as Codi,
memArticle
INTO tblArticlesindexats
FROM tblArticles
ORDER BY Replace(memArticle, '¿', '') //Así falla. Pero solo en un select
con un INTO
Y necesito que el identity sea creado de acuerdo al order by.
Adjunto el script con la creacion de las tablas y los select de lo que estoy
haciendo.
SET NOCOUNT ON
iF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'tblAOrdenar')
DROP TABLE tblAOrdenar
CREATE TABLE tblAOrdenar
(
lngID int,
memArticle nvarchar(400)
)
GO
INSERT INTO tblAOrdenar VALUES (1, '¿B')
INSERT INTO tblAOrdenar VALUES (2, 'A')
INSERT INTO tblAOrdenar VALUES (4, '¿C')
INSERT INTO tblAOrdenar VALUES (3, 'AB')
GO
SET NOCOUNT OFF
PRINT 'ORDEN NATURAL'
select * from tblAOrdenar order by memArticle
GO
PRINT 'ORDEN SIN INTERROGANTES' --ESTE ES EL ORDEN QUE QUIERO CONSEGUIR
select * from tblAOrdenar order by replace(memArticle,'¿','')
GO
iF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'tblOrdenats')
DROP TABLE tblOrdenats
go
select
identity(int) as codi,
memArticle
into tblOrdenats
from tblAOrdenar
order by
replace(memArticle,'¿','')
GO
PRINT 'ORDEN EN LA NUEVA TABLA'
SELECT * from tblOrdenats ORDER BY codi
Grácias
Leer las respuestas