Problemas con un Select con la función Case
Publicado por Lluri (9 intervenciones) el 23/04/2001 14:27:12
A ver si alguien me puede ayudar con un problemilla que tengo con una Select con la función Case.
El Select que me da problemas, simplificado, es el siguiente:
SELECT
CASE WHEN LIBROS.LibTi1 IS NULL THEN SPACE(40)
WHEN 4 - LEN(LTRIM(CONVERT(CHAR, LIBROS.LibTi1)))
> 0 THEN RTRIM(LTRIM(CONVERT(CHAR, LIBROS.LibTi1)))
+ SPACE(4 - LEN(LTRIM(CONVERT(CHAR, LIBROS.LibTi1))))
ELSE RTRIM(SUBSTRING(LTRIM(CONVERT(CHAR,
LIBROS.LibTi1)), 1, 4)) END
FROM LIBROS INNER JOIN
EDITORIA ON (LIBROS.EDICOD = EDITORIA.EDICOD)
El problema que tengo es que cuando Libros.LibTi1 es Nulo no me pone los 40 espacios. Parece ser que además de entrar en el primer Case también entra en el segundo, donde se quitan parte de los espacios. ¿Como puede ser eso?
He probado de poner en el segundo Case una condición que excluya la anterior, es decir, un Is Not Null; pero siguen sin funcionar ¿?
Gracias por la seguro que útil ayuda.
El Select que me da problemas, simplificado, es el siguiente:
SELECT
CASE WHEN LIBROS.LibTi1 IS NULL THEN SPACE(40)
WHEN 4 - LEN(LTRIM(CONVERT(CHAR, LIBROS.LibTi1)))
> 0 THEN RTRIM(LTRIM(CONVERT(CHAR, LIBROS.LibTi1)))
+ SPACE(4 - LEN(LTRIM(CONVERT(CHAR, LIBROS.LibTi1))))
ELSE RTRIM(SUBSTRING(LTRIM(CONVERT(CHAR,
LIBROS.LibTi1)), 1, 4)) END
FROM LIBROS INNER JOIN
EDITORIA ON (LIBROS.EDICOD = EDITORIA.EDICOD)
El problema que tengo es que cuando Libros.LibTi1 es Nulo no me pone los 40 espacios. Parece ser que además de entrar en el primer Case también entra en el segundo, donde se quitan parte de los espacios. ¿Como puede ser eso?
He probado de poner en el segundo Case una condición que excluya la anterior, es decir, un Is Not Null; pero siguen sin funcionar ¿?
Gracias por la seguro que útil ayuda.
Valora esta pregunta


0