2016-05-11 7 views
1

ich gerade angefangen habe mit SQL und ich habe eine ziemlich grundlegende Frage:Operand Datentyp varchar ist ungültig für divide Operator

ich 2 Spalten versucht Teilen (Menge/Rate) - I umgewandelt sie von dem Geld "auf‚INT‘, aber wenn ich die Ausführung versucht, es gab mir diesen Fehler:

Operand data type varchar is invalid for divide operator.

Dies ist die Abfrage ich tippte:

select referenceid, 
     CONVERT(decimal(15,3), sellamount) as 'amount', 
     convert(decimal(15,3), rateactual) as 'Rate', 
     convert(decimal(15,3),'amount'/'rate') as 'local amount' 
FROM currencyfxconversions 

Kann mir jemand helfen zu verstehen, was ich falsch gemacht habe?

+0

''Rate'' ist in' varchar' Typ .. Sie müssen möglicherweise 'convert (Dezimal (15,3),' Betrag '/ konvertieren (Dezimal (15,3), rateactual)' anstelle von 'convert (dezimal (15,3), 'betrag'/'rate')'. – Wanderer

+1

sql-server und MySql sind zwei verschiedene Produkte –

+1

Was möchten Sie tun? 'rate' ist eine Zeichenkette, die die Zeichen enthält 'r', 'a', 't' und 'e'. Sie können die Zeichenkette 'menge' nicht mit der Zeichenkette 'rate' teilen. Wenn Sie Alias-Namen verwenden möchten, verwenden Sie die doppelten Anführungszeichen, z. - einfache Anführungszeichen sind für String-Literale, aber dann: Sie können den Alias-Namen nicht in der select select-Klausel verwenden, in der Sie ihn definieren, da es keine Reihenfolge gibt, in der die Werte ausgewertet werden (zB die Zeile 'as" local amount ") vor der Zeile 'as" betrag "ausgeführt werden.) –

Antwort

5

wie diese versuchen,

SELECT referenceid 
    ,CONVERT(DECIMAL(15, 3), sellamount) AS 'amount' 
    ,convert(DECIMAL(15, 3), rateactual) AS 'Rate' 
    ,convert(DECIMAL(15, 3), (CONVERT(DECIMAL(15, 3), sellamount)/convert(DECIMAL(15, 3), rateactual))) AS 'local amount' 
FROM currencyfxconversions 
+0

Danke, ich habe versucht: (konvertieren (dezimal (15,3), sellamount)/konvertieren (dezimal (15,3), rateactual)) und es hat funktioniert :) – Meital

0

In der obigen Abfrage "convert (decimal (15,3), 'Menge'/'Rate')" muss mit convert ersetzt werden (CONVERT (dezimal (15 , 3), sellamount)/convert (dezimal (15,3), rateactual))

+0

Vielen Dank, das war sehr hilfreich! Ich habe getan, was Sie vorgeschlagen haben, aber löschte die erste "CONVERT" und es hat funktioniert :) – Meital

0

Ihr Fehler ist die Verwendung der Spalte, die Sie in dem gleichen Kontext verwenden. Sie können den Alias ​​nicht als Tabellenspalte im Kontext Auswählen verwenden. Sie müssen die letzten Aliasabfragen wiederholen.

SELECT referenceid 
,CONVERT(DECIMAL(15, 3), sellamount) AS 'amount' 
,convert(DECIMAL(15, 3), rateactual) AS 'Rate' 
,convert(DECIMAL(15, 3), (CONVERT(DECIMAL(15, 3), sellamount)/convert(DECIMAL(15, 3), rateactual))) AS 'local amount' 
Verwandte Themen