Ich habe unten Abfrage und Notwendigkeit, Guss id
zuvarchar
Schema
create table t9 (id int, name varchar (55));
insert into t9( id, name)values(2, 'bob');
Was ich versucht habe
select CAST(id as VARCHAR(50)) as col1 from t9;
select CONVERT(VARCHAR(50),id) as colI1 from t9;
aber sie funktionieren nicht. Bitte vorschlagen.
Antworten:
Sie müssen
cast
oderconvert
alsCHAR
Datentyp, es gibt keinenvarchar
Datentyp, in den Sie Daten umwandeln / konvertieren können:Sehen Sie sich das folgende SQL - in Aktion - bei SQL Fiddle an :
Abgesehen von der Tatsache, dass Sie versucht haben, in einen falschen Datentyp zu konvertieren, war die Syntax, für die Sie verwendet haben,
convert
falsch. Dieconvert
Funktion verwendet Folgendes, woexpr
sich Ihre Spalte oder Ihr Wert befindet:oder
Ihre ursprüngliche Abfrage hatte die Syntax rückwärts.
quelle
concat()
einer Konvertierung ist nicht unbedingt so intuitiv. Ich würde es vorziehen, wenn mein Code klar ist und das macht einfach nicht viel Sinn.Du bekommst das, weil
VARCHAR
es kein gültiger Typ ist, in den du dich verwandeln kannst . Gemäß den MySQL-Dokumenten ( http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast ) können Sie nur Folgendes übertragen:Ich denke, Ihre beste Wahl ist zu verwenden
CHAR
.quelle
Ja
ist postgresql, aber mySql erlaubt das nicht!
Abkürzung in mySql:
quelle
Ich habe kein MySQL, aber es gibt RDBMS (unter anderem Postgres), in denen Sie den Hack verwenden können
Die Verkettung führt eine implizite Konvertierung durch.
quelle
Ich habe ein Problem beim Vergleichen einer Ganzzahlspalte xa
varchar
mit gelöstwhere CAST(Column_name AS CHAR CHARACTER SET latin1 ) collate latin1_general_ci = varchar_column_name
quelle
verwenden :
quelle
Ich werde dies allgemein beantworten und den oben genannten Mitwirkenden sehr dankbar sein.
Ich verwende MySQL auf MySQL Workbench. Ich hatte ein ähnliches Problem beim Versuch, a
char
und aint
mithilfe derGROUP_CONCAT
Methode miteinander zu verknüpfen . Zusammenfassend hat Folgendes für mich funktioniert:Nehmen wir an, Sie
char
sind 'c' undint
'i'. Die Abfrage lautet also:...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...
quelle
Sollte in der Lage sein, so etwas auch zu tun:
quelle