Cast int a varchar

tenho a pergunta abaixo e preciso de lançar id para varchar

Esquema

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

O Que eu tentei

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

select CONVERT(VARCHAR(50),id) as colI1 from t9;
Mas não funcionam. Por favor, sugira.

Author: Mr. Polywhirl, 2013-03-12

7 answers

Terá de cast ou convert como um CHAR datatype, não existe nenhum varchar datatype que você possa moldar / converter dados para:

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

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

Ver o seguinte SQL - in action-over at 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;

Além do fato de que você estava tentando converter para um datatype incorreto, a sintaxe que você estava usando para convert estava incorreta. A função convert usa o seguinte em que expr é a sua coluna ou valor:

 CONVERT(expr,type)

Ou

 CONVERT(expr USING transcoding_name)
A sua consulta original tinha a sintaxe para trás.
 170
Author: Taryn, 2016-12-21 16:00:30
Estás a perceber porque "VARCHAR" não é um tipo válido para lançar. De acordo com os documentos do MySQL ([[2]} http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast só podes lançar para:
  • BINÁRIO [(N)]
  • CHAR [(N)]
  • Data
  • DATETIME
  • DECIMAL [(M [, D])]
  • assinado
  • [inteiro]
  • Tempo
  • SEM SINAL [INTEIRO]
Acho que a tua melhor aposta é usar o CHAR.
 29
Author: Aaron, 2013-03-12 18:08:42

Sim

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

É postgresql, mas mySql não permite isso!

Atalho em mySql:

SELECT concat(id, '') FROM some_table;
 11
Author: nancy, 2015-09-12 18:19:43
Eu não tenho MySQL, mas há RDBMS (Postgres, entre outros) em que você pode usar o hack
SELECT id || '' FROM some_table;

O concatenato faz uma conversão implícita.

 3
Author: Andrew Lazarus, 2013-03-13 06:24:22

Resolvi um problema para comparar uma coluna inteira x a varchar com

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

 2
Author: user6348455, 2018-03-16 21:54:03

Utilizar:

SELECT cast(CHAR(50),id) as colI1 from t9;
 0
Author: user2132046, 2013-03-12 18:08:28
Vou responder a isso em termos gerais, e muito grato aos contribuidores acima.
Estou a usar o MySQL na bancada de trabalho do MySQL. Eu tive um problema semelhante tentando concatenar a {[[0]} e um int juntos usando o método GROUP_CONCAT. Em resumo, o que tem funcionado para mim é este:

digamos que o teu char é 'c' e int É 'i', por isso, a consulta torna-se:
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...
 0
Author: H.B, 2018-03-16 21:01:14