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.
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.
- BINÁRIO [(N)]
- CHAR [(N)]
- Data
- DATETIME
- DECIMAL [(M [, D])]
- assinado
- [inteiro]
- Tempo
- SEM SINAL [INTEIRO]
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;
SELECT id || '' FROM some_table;
O concatenato faz uma conversão implícita.
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
Utilizar:
SELECT cast(CHAR(50),id) as colI1 from t9;
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))...