it-swarm.com.de

Umwandlung in varchar

Ich habe unter Abfrage und muss id in varchar

Schema

create table t9 (id int, name varchar (55));
insert into t9( id, name)values(2, 'bob');

Was ich probiert habe

select CAST(id as VARCHAR(50)) as col1 from t9;

select CONVERT(VARCHAR(50),id) as colI1 from t9;

aber sie arbeiten nicht. Bitte vorschlagen.

94
Mario

Sie müssen cast oder convert als CHAR-Datentyp angeben. Es gibt keinen varchar-Datentyp, in den Sie Daten konvertieren/konvertieren können:

select CAST(id as CHAR(50)) as col1 
from t9;

select CONVERT(id, CHAR(50)) as colI1 
from t9;

Siehe folgende SQL-in-Action-over bei SQL Fiddle :

/*! Build Schema */
create table t9 (id INT, name VARCHAR(55));
insert into t9 (id, name) values (2, 'bob');

/*! SQL Queries */
select CAST(id as CHAR(50)) as col1 from t9;
select CONVERT(id, CHAR(50)) as colI1 from t9;

Abgesehen davon, dass Sie versucht haben, in einen falschen Datentyp zu konvertieren, war die Syntax, die Sie für convert verwendeten, falsch. Die convert-Funktion verwendet Folgendes, wobei expr Ihre Spalte oder Ihr Wert ist:

 CONVERT(expr,type)

oder 

 CONVERT(expr USING transcoding_name)

Ihre ursprüngliche Abfrage hatte die Syntax rückwärts.

182
Taryn

Sie erhalten das, weil "VARCHAR" kein gültiger Typ ist, in den gewirkt werden kann. Laut den MySQL-Dokumenten ( http://dev.mysql.com/doc/refman/5.5/de/cast-functions.html#function_cast ) können Sie nur in Folgendes umwandeln: 

  • BINARY [(N)]
  • CHAR [(N)]
  • DATUM
  • TERMINZEIT
  • DECIMAL [(M [ D])]
  • UNTERZEICHNET
  • [GANZE ZAHL]
  • ZEIT
  • UNSIGNED [INTEGER]

Ich denke, Ihre beste Wette ist die Verwendung von CHAR.

30
Aaron

Ja 

SELECT id || '' FROM some_table;
or SELECT id::text FROM some_table;

ist postgresql, aber mySql erlaubt das nicht!

abkürzung in mySql:

SELECT concat(id, '') FROM some_table;
12
nancy

Ich habe kein MySQL, aber es gibt unter anderem RDBMS (Postgres), in denen Sie den Hack verwenden können

SELECT id || '' FROM some_table;

Die Verkettung führt eine implizite Konvertierung durch.

3
Andrew Lazarus

Ich habe ein Problem beim Vergleichen einer ganzzahligen Spalte x einer varchar -Spalte mit gelöst

where CAST(Column_name AS CHAR CHARACTER SET latin1 ) collate latin1_general_ci = varchar_column_name

2
user6348455

Ich werde dies allgemein beantworten und bin den oben genannten Mitwirkenden sehr dankbar.
Ich verwende MySQL auf der MySQL Workbench. Ich hatte ein ähnliches Problem beim Versuch, ein char und ein int mithilfe der Methode GROUP_CONCAT Zusammenzufügen. Zusammenfassend hat sich für mich Folgendes bewährt:

Angenommen, Ihr char ist 'c' und int ist 'i'. Die Abfrage lautet also:
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...

0
H.B

benutzen : 

SELECT cast(CHAR(50),id) as colI1 from t9;
0
user2132046