in

UGISS Community

Il sito della community dello User Group Italiano di SQL Server

Conversione da nvarchar a float!

Last post 04-05-2008 12.25 by dmauri. 5 replies.
Page 1 of 1 (6 items)
Sort Posts: Previous Next
  • 04-02-2008 13.43

    Conversione da nvarchar a float!

    Salve a tutti, ho trovato questa community e non credo la lascerò più...è utile e geniale per gli adminitsrator di db.
    Detto questo volevo rendermi utile facendo presente come ho effettuato una conversione da "nvarchar" a "float", di seguito descritta, e vorrei sapere se esestono, secondo voi, modi migliori:
    L'origine del dato è un file .xls avente una colonna "importi totali", di tipo nvarchar, riempita di informazioni simili es: 

    1. 000000000025200,00;
    2. 1.41968e+006;
    3. 100773;
    4. 99999.2;
    5. etc...etc...Yes
    A questo punto lancio il seguente comando...

    /*INIZIO - eseguire il seguente comando una sola volta*/

    update tabella
    set campo = replace(campo,'.','')
    go
    update tabella
    set campo = replace(campo,',','.')
    go /*FINE */

    Aggiornata la tabella otterò le stringhe corrette avendo "." come separatore di decimali e non la virgola!
    Lanciando il seguente update, invece, aggiorno la colonna, che rimane nvarchar, ma così le stringhe sono ok...basta solo modificare il campo facendo tasto dx-modify e selezionare "float" e il gioco è fatto.

    update tabella
    set campo = convert(float,campo)
    from tabella
    go

    Spero di essere stato utile..............

     

     

    Filed under:
    • Post Points: 50
  • 04-03-2008 8.38 In reply to

    • dmauri
    • Top 10 Contributor
      Male
    • Joined on 05-14-2007
    • Novate Milanese
    • Posts 1.182
    • Points 15.485

    Re: Conversione da nvarchar a float!

    sql.server:
    Salve a tutti, ho trovato questa community e non credo la lascerò più...

    Benvenuto!!!!

    sql.server:
    Detto questo volevo rendermi utile

    Sei che hai a disposizione un blog tutto tuo dove puoi scrivere articoli come quello che hai messo nel forum?

    http://community.ugiss.org/blogs/sql.server/

    Tipicamente questo genere di articoli di pubblica utilità è meglio metterli sul tuo blog o sul sito di UGISS, in modo che siano più facilmente raggiungibili anche in futuro. Il forum è tipicamente migliore, invece, per discutere di idee/problemi.

    A presto!

     

    Davide Mauri
    Microsoft MVP - SQL Server, MCP, MCAD, MCDBA, MCT - http://www.davidemauri.it
    Socio Fondatore e Mentor di Solid Quality Learning Italy - http://www.solidq.com
    Presidente di UGISS: User Group Italiano Sql Server - http://www.ugiss.org
    • Post Points: 20
  • 04-03-2008 8.41 In reply to

    • dmauri
    • Top 10 Contributor
      Male
    • Joined on 05-14-2007
    • Novate Milanese
    • Posts 1.182
    • Points 15.485

    Re: Conversione da nvarchar a float!

    Una domanda: ma sei sicuro che il valore numero 2, ossia quello con la notazione scientifica, venga convertito correttamente?

    Non ho fatto prove empiriche, ma leggendo il codice il primo update porta il numero 1.41968e+006 a 141968e+006, che ovviamente non è lo stesso numero :-)

    Davide Mauri
    Microsoft MVP - SQL Server, MCP, MCAD, MCDBA, MCT - http://www.davidemauri.it
    Socio Fondatore e Mentor di Solid Quality Learning Italy - http://www.solidq.com
    Presidente di UGISS: User Group Italiano Sql Server - http://www.ugiss.org
    • Post Points: 5
  • 04-04-2008 19.43 In reply to

    Re: Conversione da nvarchar a float!

    Ciao Maury....si avevo letto prima di registrarmi....cmq seguirò il tuo consiglio di inserire discussioni simili, per prima, sul sito di UGISS ed in seguito sul Blog che realizzerò tempo permettendo...
    Cmq ho avuto il piacere di seguire un incontro, sul prodotto, a Roma dove c'eri tu come Relatore....sei veramente forte!!!
    Per la conversione di cui mi chiedi, che ho effettuato, ti do conferma dell'esito corretto.

    A presto.Wink

    • Post Points: 20
  • 04-05-2008 12.23 In reply to

    • dmauri
    • Top 10 Contributor
      Male
    • Joined on 05-14-2007
    • Novate Milanese
    • Posts 1.182
    • Points 15.485

    Re: Conversione da nvarchar a float!

    sql.server:
    Cmq ho avuto il piacere di seguire un incontro, sul prodotto, a Roma dove c'eri tu come Relatore....sei veramente forte!!!

    Grazie mille! Smile

    sql.server:
    Per la conversione di cui mi chiedi, che ho effettuato, ti do conferma dell'esito corretto.

    Sei *veramente* sicuro? Io ho fatto una prova, ed i numeri poi non tornano....

    USE [tempdb]
    GO

    IF (OBJECT_ID('dbo.Test') IS NOT NULL) DROP TABLE dbo.Test
    GO

    CREATE TABLE dbo.Test
    (
     campo VARCHAR(1000) NOT NULL
    )
    GO

    INSERT INTO dbo.Test VALUES ('000000000025200,00');
    INSERT INTO dbo.Test VALUES ('1.41968e+006');
    INSERT INTO dbo.Test VALUES ('100773');
    INSERT INTO dbo.Test VALUES ('99999.2');
    GO

    SELECT * FROM dbo.[Test] AS t
    go

    update dbo.Test set campo = replace(campo,'.','')
    go
    update dbo.Test set campo = replace(campo,',','.')
    GO

    SELECT * FROM dbo.[Test] AS t
    go

    Davide Mauri
    Microsoft MVP - SQL Server, MCP, MCAD, MCDBA, MCT - http://www.davidemauri.it
    Socio Fondatore e Mentor di Solid Quality Learning Italy - http://www.solidq.com
    Presidente di UGISS: User Group Italiano Sql Server - http://www.ugiss.org
    • Post Points: 5
  • 04-05-2008 12.25 In reply to

    • dmauri
    • Top 10 Contributor
      Male
    • Joined on 05-14-2007
    • Novate Milanese
    • Posts 1.182
    • Points 15.485

    Re: Conversione da nvarchar a float!

    sql.server:
    selezionare "float" e il gioco è fatto

    Attenzione ad usare i float che sono dati imprecisi. In futuro potresti scontrati con problemi come questo:

    http://community.ugiss.org/forums/p/962/2805.aspx#2805

    usa i decimal se puoi.

    Davide Mauri
    Microsoft MVP - SQL Server, MCP, MCAD, MCDBA, MCT - http://www.davidemauri.it
    Socio Fondatore e Mentor di Solid Quality Learning Italy - http://www.solidq.com
    Presidente di UGISS: User Group Italiano Sql Server - http://www.ugiss.org
    • Post Points: 5
Page 1 of 1 (6 items)
(C) 2007 User Group Italiano di SQL Server