Saltar al contenido

Como obtener el números ordinal en sql server

Para obtener los números ordinales usando sql server, primero debemos entender cuando utilizar. Por lo general usamos para indicar la posición o el orden de un elemento dentro de una lista o conjunto, a diferencia de los números cardinales que expresan cantidades.

Si trabajas con bases de datos en SQL Server y necesitas convertir números a su forma ordinal, no dudes en utilizar la función que te hemos presentado en este artículo.

Índice

    Cuando convertir a ordinal?

    Supongamos que tienes una tabla en SQL Server llamada «EventosCulturales» que contiene información sobre diferentes eventos culturales, incluyendo el número de edición de cada evento.Para este caso sql server cuenta con la función Format que nos permite convertir de cardinal a ordinal desde sql server 2012 en adelante.

    La función format puedes usarla para dar formato de moneda y convertir fechas ademas esta es una función nativa de sql server por lo cual no necesitas hacer ninguna funcion de usuario.

    Formato para obtener el números ordinal

    Para convertir un número en SQL Server a su forma ordinal, puedes utilizar la función FORMAT con la especificación de formato 'o'.

    Por ejemplo, si tienes el número 1 y quieres convertirlo a su forma ordinal (es decir, «1st»), puedes hacer lo siguiente:

    SELECT FORMAT(1, 'o') AS Ordinal;
    

    Esto producirá el siguiente resultado:

    Ordinal
    -------
    1st
    

    La función FORMAT también admite argumentos adicionales para especificar el idioma y la cultura utilizados en la conversión. Por ejemplo, si quieres convertir el número 3 a su forma ordinal en español, puedes hacer lo siguiente:

    SELECT FORMAT(3, 'o', 'es-es') AS Ordinal;
    

    Esto producirá el siguiente resultado:

    Ordinal
    -------
    3º
    

    También puedes utilizar la Clausula CASE para crear una expresión que convierta un número en su forma ordinal en un conjunto específico de idiomas y culturas.

    con la funcion format usamos la representacion abreviada del numero ordinal.

    Funcion sql server en letras

    Para hacer esta representacion necesitamos crear una funcion de usuario quer represente el numero es su formato largo de cadena de caracteres. Para esto te recomiendo tener instalado tu sql server management studio.

    Para este caso con la ayuda del case y la cantidad de numero ordinales que deseas representar tendremos la siguiente funcion:

    CREATE FUNCTION dbo.fn_OrdinalEnLetras (@num AS INT)
    RETURNS NVARCHAR(50)
    AS
    BEGIN
    DECLARE @result NVARCHAR(50)
    
    SELECT @result = CASE @num
        WHEN 1 THEN 'primero'
        WHEN 2 THEN 'segundo'
        WHEN 3 THEN 'tercero'
        WHEN 4 THEN 'cuarto'
        WHEN 5 THEN 'quinto'
        WHEN 6 THEN 'sexto'
        WHEN 7 THEN 'séptimo'
        WHEN 8 THEN 'octavo'
        WHEN 9 THEN 'noveno'
        WHEN 10 THEN 'décimo'
        ELSE CAST(@num AS NVARCHAR) + CASE RIGHT(CAST(@num AS NVARCHAR(2)), 1)
            WHEN '1' THEN 'o'
            WHEN '2' THEN 'o'
            WHEN '3' THEN 'o'
            ELSE 'o'
        END
    END
    
    RETURN @result
    
    END

    Para este caso utilizamos diez niveles pero esta funcion se puede personalizar segun la necesidad que tengas.

    Conclusion

    ¡Prueba a aplicarla en tus consultas y aprovecha su utilidad para mejorar tus procesos de análisis de datos! Además, si conoces a alguien más que podría beneficiarse de esta función, comparte este artículo con ellos para que también puedan sacarle provecho.

    Hasta la proxima gracias :D!!