2016-05-18 107 views
1

Ich habe zwei Tabellen. Ich muss zwei Werte vergleichen, aber sie haben einen unterschiedlichen Datentyp in beiden Tabellen. In einer Tabelle ist es int und in einer anderen Tabelle ist es varchar. Ich habe versucht, varchar mit cast() zu verwenden, aber cast() funktioniert nicht mit varchar.Konvertieren von Int in Varchar-Datentyp in MySQL

Meine Frage ist wie folgt:

select user.username, user_follow.object_id from user,user_follow 
left join user_follow 
ON cast(user_follow.object_id as varchar(25))= user.username 
WHERE user.username= cast(user_follow.object_id as varchar(25)); 

Hilfe bitte. danke.

Antwort

0

Sie sollten cast als CHAR Datentyp, gibt es keine varchar Datentyp, der Sie Daten werfen können, trotzdem versuchen, diese bitte :)
nicht sicher, was Sie verwenden möchten, left join oder join.

select u.username, uf.object_id from user u 
left join user_follow uf 
ON cast(uf.object_id as char(25))= cast(u.username as char(25)) 
-- WHERE cast(u.username as char(25)) = cast(uf.object_id as char(25)); 

Oder

select u.username, uf.object_id from user u, user_follow uf 
-- left join user_follow uf 
-- ON cast(uf.object_id as char(25))= cast(u.username as char(25)) 
WHERE cast(u.username as char(25)) = cast(uf.object_id as char(25)); 

Und einen Blick von function_cast nehmen.

+0

Danke für die Beantwortung. –

+0

Ich habe versucht, die obige Abfrage zu verwenden, aber es gibt mir einen Fehler. Fehlercode: 1066. Nicht eindeutige Tabelle/Alias: 'user_follow' –

+0

Aktualisiert, bitte überprüfen Sie es erneut. – Blank

2

": funktioniert nicht:" ist eine ungenaue Beschreibung des beobachteten Verhaltens.

Wir erwarten, dass MySQL zu „arbeiten“ gemäß der Spezifikation und das Verhalten, das wir erwarten ist für MySQL eine bestimmte Fehlermeldung zurück, wie 1064.

Error Code: 1064 
You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near VARCHAR 

wir, dass Fehlermeldung erwarten, da nach Für das MySQL-Referenzhandbuch ist VARCHAR kein gültiger Typ für CAST, aber CHAR ist.

Referenz:

http://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert


HINWEIS:

Das ist nicht das einzige Problem mit der Abfrage ist.

Es scheint zwei Referenzen auf die user_follow Tabelle zu geben; und für mindestens eine dieser Referenzen muss ein Tabellenalias zugewiesen sein.

Die Abfrage verwendet für eine Join-Operation ebenfalls Old-School-Kommasyntax, und eine andere Join-Operation verwendet das neuere JOIN-Schlüsselwort.

Ohne eine Angabe der Ergebnismenge, die zurückgegeben werden soll, sind wir nur "raten", welche Abfrage Sie tatsächlich ausführen möchten. Ich schätze ...

SELECT u.username 
     , f.object_id 
    FROM user u 
    LEFT 
    JOIN user_follow f 
     ON CONVERT(CHAR(25),f.object_id) = u.username