Olá pessoal!
Bom dia!

Neste post vou demonstrar como converter um número normal (de base 10) para um algarismo romano (X, XVII, etc) utilizando uma função Transact-SQL no SQL Server que encontrei no blog do Advaldo Paiva. Por ser uma função, podemos aplicá-la para uma conversão simples ou para atualizar os dados de uma tabela, por exemplo.

Código da função:

CREATE FUNCTION [dbo].[fncConverte_Para_Romanos] (
    @Numero BIGINT
)
RETURNS VARCHAR(MAX)
BEGIN

    DECLARE @s varchar(MAX), @r varchar(MAX), @i bigint, @p bigint, @d bigint
     
    SET @s = ''
    SET @r = 'IVXLCDM' -- Simbolo Romanos
     
     IF @numero=0
        SET @s = '0'
        
     ELSE BEGIN
     
        SELECT @p = 1, @i = ABS(@numero)
        WHILE(@p<=5)
        BEGIN
            SET @d = @i % 10
            SET @i = @i / 10
            SELECT @s = CASE WHEN @d IN (0,1,2,3) THEN REPLICATE(SubString(@r,@p,1),@d) + @s
                             WHEN @d IN (4) THEN SUBSTRING(@r,@p,2) + @s
                             WHEN @d IN (5,6,7,8) THEN SUBSTRING(@r,@p+1,1) + REPLICATE(SubString(@r,@p,1),@d-5) + @s
                             WHEN @d IN (9) THEN SUBSTRING(@r,@p,1) + SubString(@r,@p+2,1) + @s
                        END
     
            SET @p = @p + 2
            
        END
        
        SET @s = Replicate('M',@i) + @s
     
        IF @numero < 0
            SET @s = '-' + @s
            
     END
     
     RETURN @s
     
END

Exemplos de utilização:

SQL Server - Números romanos Roman Numeral
SQL Server - Números romanos Roman Numeral

É isso aí pessoal,
Obrigado pela visita e até a próxima!

Como converter números para algarismos romanos no SQL Server Romain Numeral

Como converter números para algarismos romanos no SQL Server Romain Numeral