Bienvenido a la Comunidad de Treehouse

¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.

¿Buscas aprender algo nuevo?

Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de

Inicia tu prueba gratuita

Bases de Datos Informes con SQL Trabajar con Texto Sesión de práctica

¿Cómo omitir los puntos suspensivos en el problema de Truncate Names que son menores a 10?

En el problema Truncate Names de la sesión de práctica, se te pide que agregues puntos suspensivos a cualquier nombre con más de 10 letras. Ordené por longitud de nombre ascendente y noté que agregó puntos suspensivos a nombres con menos de 10 letras. Aquí está lo que escribí

select substr(name, 1, 10) || ... como Nombres, longitud(name) como Longitud from actores
order por longitud asc

Uno de los resultados es el nombre "Lu Kai..." y aunque esto tiene menos de 10 letras (el nombre es solo "Lu Kai" en la base de datos) aún agrega los puntos suspensivos al final causando que muestre "Lu Kai...". ¿Cómo puedo evitar que la consulta agregue puntos suspensivos a nombres con menos de 10 letras?

1 Respuesta

Steven Parker
Steven Parker
244 163 puntos

El código mostrado arriba siempre agrega los puntos suspensivos a la cadena. Necesitas codificarlo para que esto solo se haga cuando la longitud es mayor que 10. Aquí es donde UNION puede ser útil, combinado con filtrado de cláusula WHERE:

SELECT SUBSTR(name, 1, 10) || ... como Nombre FROM actores WHERE LONGITUD(name) > 10
UNION
SELECT name FROM actores WHERE LONGITUD(name) <= 10;