+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 2 su 2

[MsSQL]Convertire valori numerici in valori scritti

  1. #1
    L'avatar di bumm
    bumm non è in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    A volte abbiamo la necessità di convertire i numeri in parole. Scrivere la procedura di conversione in un linguaggio di programmazione non sempre è opportuno. Ecco a Voi una funzione per sql server 2000-2005 che restituisce il valore scritto di un numero.

    Uno dei vantaggi di questa funzione è che può essere usata da qualsiasi programma indipendentemente dal linguaggio.




    --------------------------------------------------------------------------
    -- Funzione per convertire valori numerici in numeri scritti
    -- GetStringValueOfMoney
    -- Yuriy Ivlyev
    -- yuriy.ivlyev@gmail.com
    --------------------------------------------------------------------------



    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    IF OBJECT_ID (N'ParseNum', N'FN') IS NOT NULL
    DROP FUNCTION dbo.ParseNum;

    GO

    CREATE function ParseNum (@Num BIGINT)
    returns varchar(255)
    as
    begin
    declare @nword varchar(255), @th tinyint, @gr smallint, @d3 tinyint, @d2
    tinyint, @d1 tinyint
    if @Num<0 return '*** Error: Valore negativo' else if @Num=0 return 'Zero'
    while @Num>0
    begin
    set @th=IsNull(@th,0)+1 set @gr=@Num%1000 set @Num=(@Num-@gr)/1000
    if @gr>0
    begin
    set @d3=(@gr-@gr%100)/100
    set @d1=@gr%10
    set @d2=(@gr-@d3*100-@d1)/10
    if @d2=1 set @d1=10+@d1
    set @nword=case @d3
    when 1 then 'cento'
    when 2 then 'duecento'
    when 3 then 'trecento'
    when 4 then 'quattrocento'
    when 5 then 'cinquecento'
    when 6 then 'seicento'
    when 7 then 'settecento'
    when 8 then 'ottocento'
    when 9 then 'novecento'
    else '' end

    +case @d2

    when 2 then 'vent'+ (case when @d1 in (1,8) then '' else 'i' end)
    when 3 then 'trent' + (case when @d1 in (1,8) then '' else 'a' end)
    when 4 then 'quarant' + (case when @d1 in (1,8) then '' else 'a' end)
    when 5 then 'cinquant' + (case when @d1 in (1,8) then '' else 'a' end)
    when 6 then 'sessant' + (case when @d1 in (1,8) then '' else 'a' end)
    when 7 then 'settant' + (case when @d1 in (1,8) then '' else 'a' end)
    when 8 then 'ottant' + (case when @d1 in (1,8) then '' else 'a' end)
    when 9 then 'novant' + (case when @d1 in (1,8) then '' else 'a' end)
    else '' end

    +case @d1

    when 1 then (case when (@th > 1 and @D2 < 1) then '' else 'uno' end)
    when 2 then 'due'
    when 3 then 'tre'
    when 4 then 'quattro'
    when 5 then 'cinque'
    when 6 then 'sei'
    when 7 then 'sette'
    when 8 then 'otto'
    when 9 then 'nove'
    when 10 then 'dieci'
    when 11 then 'undici'
    when 12 then 'dodici'
    when 13 then 'tredici'
    when 14 then 'quattordici'
    when 15 then 'quindici'
    when 16 then 'sedici'
    when 17 then 'diciasette'
    when 18 then 'diciotto'
    when 19 then 'dicianove'
    else '' end

    +case @th
    when 2 then 'mil' +(case when (@d1= 1 and @d2 = 0 ) then 'le' else 'a' end)
    when 3 then 'million' + (case when @d1 = 1 then 'e' else 'i' end)
    when 4 then 'milliard' + (case when @d1 = 1 then 'o' else 'i' end)
    when 5 then 'trillion' + (case when @d1 = 1 then 'e' else 'i' end)
    when 6 then 'quadrillion' + (case when @d1 = 1 then 'e' else 'i' end)
    when 7 then 'quintillion' + (case when @d1 = 1 then 'e' else 'i' end)
    else '' end

    +IsNull(@nword,'')
    end
    end
    return @nword
    end

    GO
    ℹ️ Leggi di più su bumm ...

  2. #2
    palex1961 non è in linea Novello
    Per caso, hai un esempio già fatto anche per convertire i valori numerici in lingua tedesca?

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Interpretare i dati boolean con valori numerici
    Da miitiicoo nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 05-02-2014, 18:54
  2. Problemi di lettura valori numerici
    Da ZioRock nel forum Microsoft SQL Server
    Risposte: 0
    Ultimo Post: 18-09-2013, 15:19
  3. Trasformare valori numerici da lettere a cifre
    Da dosso89 nel forum Visual Basic 6
    Risposte: 14
    Ultimo Post: 02-11-2007, 13:36
  4. [C/C++] Lettura di valori numerici da file
    Da masmil1988 nel forum C/C++
    Risposte: 3
    Ultimo Post: 10-01-2006, 17:17
  5. Sostituire testo con valori numerici
    Da Jachie nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 26-03-2005, 11:59