2017-09-16 9 views
0

Ich habe zwei Tabellen in mysql wie folgt:Wie mache ich mysql Ausdruck, um ganzzahligen Wert zurückzugeben?

Table1 hält die Fragen

qid tid qtype 
101 1 1 
102 1 2 
103 1 3 
104 1 4 

Hier qtype Fragetyp ist, wo qtype 1 und 2 numerische Werte und 3 und 4 akzeptieren Zeichenfolge akzeptieren. Ich habe qtype als varchar Spalte deklariert.

Table2 hält die Antworten

sid qid qtype qanswer 
1 101 1  10 
1 102 2  20 
1 103 3  o1 
1 104 4  o2 

gibt es Reihen für jede Frage für jeden 'sid'.

Ich habe Daten in folgenden Art und Weise ausgewählt folgende Abfrage verwenden:

select a.sid, MAX(CASE WHEN (a.qid = 101) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '101' , 
MAX(CASE WHEN (a.qid = 102) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '102' , 
MAX(CASE WHEN (a.qid = 103) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '103' , 
MAX(CASE WHEN (a.qid = 104) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '104' from Table2 a join Table1 b on a.qtype = b.qtpe where b.tid = 1 

sid 101 102 103 104 
1 10 20 o1 o2 
2 30 15 o2 o1 

Ich wollte qtype 1 und 2 als Ganzzahl wählen, damit ich in meiner Anfrage unter Anweisung verwendet:

if(qtype in (1,2),cast(qanswer as unsigned),qanswer) 

Ich bin Keine Antwort für qtype 1 und 2 wie gewünscht erhalten. Ich nahm Bezug von diesem

Ich versuchte auch convert anstelle der Besetzung, sondern bekam das gleiche Ergebnis. Wie kann ich qtype 1 und 2 als Ganzzahl umwandeln?

Wie man den Integer-Wert von mysql Ausdruck zurückgibt.

Antwort

0

Dies ist keine Anweisung:

if(qtype in (1, 2), cast(qanswer as unsigned), qanswer) 

Dies ist ein Ausdruck. Ein Ausdruck gibt einen Skalarwert mit einem einzelnen Typ zurück. MySQL muss entscheiden, ob der zurückgegebene Typ unsigned oder varchar ist, weil er einen für den gesamten Ausdruck auswählen muss.

MySQL würde scheinen, den Zeichenkettentyp zu wählen.

+0

Wie mache ich mysql zu Integer-Wert statt String-Wert zu wählen. – AMahajan

+0

@AMahajan. . . Das wäre eine andere Frage als die, die Sie gestellt haben. Sie sollten neue Fragen als * Frage * und nicht als * Kommentar * stellen. Geben Sie Beispieldaten und gewünschte Ergebnisse an. –

Verwandte Themen