Problema con conversione

lunedì 31 luglio 2006 - 09.04

bluland Profilo | Guru

salve,

ho fatto la seguente query

select * from Moduli
inner join
Strumenti
on
Moduli.IdentificativoModulo = Strumenti.Id_Strumenti

mi da il seguente errore:
Error converting data type varchar to numeric.

ovviamente perche identificativomoduloe nvarchar e id_strumenti e decimal, quindi non riesce a confrontarli??

come superare il problema idee??

saluti
ENzo

lbenaglia Profilo | Guru

>select * from Moduli
>inner join
>Strumenti
>on
>Moduli.IdentificativoModulo = Strumenti.Id_Strumenti
>
>mi da il seguente errore:
>Error converting data type varchar to numeric.
>
>ovviamente perche identificativomoduloe nvarchar e id_strumenti
>e decimal, quindi non riesce a confrontarli??
>
>come superare il problema idee??

SELECT * FROM Moduli AS M JOIN Strumenti AS S ON M.IdentificativoModulo = CAST(S.Id_Strumenti AS nvarchar)

Ad ogni modo rimane una porcata

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluland Profilo | Guru

porcata!! nel senso che non rispetta gli standard??
quindi dovrei solo cambiare il tipo di campo in uno dei due per renderla "standard" o c'e' un altro modo??

EDIT:

non ho capito bene la differenza tra CAST e CONVERT, perche utilizzare l'uno piuttosto che l'altro?

lbenaglia Profilo | Guru

>porcata!! nel senso che non rispetta gli standard??
>quindi dovrei solo cambiare il tipo di campo in uno dei due per
>renderla "standard" o c'e' un altro modo??

E' una porcata perché la funzione di cast verrà applicata ad ogni riga che soddisfa la query.
Per quale motivo vuoi mettere in JOIN due tabelle su due colonne con data type diversi?
Se le metti in JOIN significa che le colonne contengono le stesse informazioni, quindi per quale motivo hanno 2 data type differenti?

>non ho capito bene la differenza tra CAST e CONVERT, perche utilizzare
>l'uno piuttosto che l'altro?
Entrambe sono funzioni di cast, ma la seconda offre la possibilità di formattare date, importi, ecc.
Sui Books Online troverai tutti i dettagli.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluland Profilo | Guru

purtoppo non e' mia l'iniziativa di fare questo join ,ma di chi ha costruito le tabelle ed anche le relazioni, quindi la porcata parte da lui, ed io glielo diro' che lo e' , quindi ritornando alla "porcata" la controindicazione di questa conversione riguarda solo e' che va inficiare il fattore prestazione solo allora ho capito bene?

lbenaglia Profilo | Guru

>purtoppo non e' mia l'iniziativa di fare questo join ,ma di chi
>ha costruito le tabelle ed anche le relazioni, quindi la porcata
>parte da lui, ed io glielo diro' che lo e' , quindi ritornando
>alla "porcata" la controindicazione di questa conversione riguarda
>solo e' che va inficiare il fattore prestazione solo allora ho
>capito bene?

Prestazioni ed integrità dei dati.
Dato che il dominio delle colonne è differente, io potrei inserire valori alfanumerici nella colonna nvarchar che probabilmente risultano incoerenti dato che l'altra colonna è numerica...
Utilizzare i data type corretti è la prima regola da adottare quando si implementa lo schema fisico di un database.

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluland Profilo | Guru

grazie sono le stesse parole che usero' con il collega appena domani torna dalle vacanze

lbenaglia Profilo | Guru

>grazie sono le stesse parole che usero' con il collega appena
>domani torna dalle vacanze
Come sei crudele...
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluland Profilo | Guru

anzi sono bravo! sto dando anche a lui cio' che ho imparato!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5