[mysql] int를 varchar로 캐스트

아래 쿼리가 있으며 캐스트 id해야합니다.varchar

개요

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

내가 시도한 것

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

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

그러나 그들은 작동하지 않습니다. 제안 해주세요.



답변

데이터 유형 이 필요 cast하거나 데이터 유형 convert으로서 데이터를 캐스트 / 변환 할 수있는 데이터 유형 CHAR이 없습니다 varchar.

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

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

SQL Fiddle 에서 실행중인 다음 SQL을 참조하십시오 .

/*! 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;

잘못된 데이터 유형으로 변환하려는 사실 외에도 사용하던 구문 convert이 잘못되었습니다. 이 convert함수는 expr열 또는 값이 있는 다음을 사용합니다 .

 CONVERT(expr,type)

또는

 CONVERT(expr USING transcoding_name)

원래 쿼리의 구문이 거꾸로되었습니다.


답변

VARCHAR캐스트 할 유효한 유형이 아니기 때문에 당신은 그것을 얻고 있습니다. MySQL 문서 ( http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast ) 에 따르면 다음으로 만 캐스트 할 수 있습니다.

  • 바이너리 [(N)]
  • CHAR [(N)]
  • 데이트
  • 날짜 시간
  • 소수 [(M [, D])]
  • 서명 됨
  • [정수]
  • 시각
  • 부호 없음 [정수]

가장 좋은 방법은 CHAR.


답변

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

postgresql이지만 mySql은 그것을 허용하지 않습니다!

mySql의 지름길 :

SELECT concat(id, '') FROM some_table;


답변

MySQL은 없지만 해킹을 사용할 수있는 RDBMS (Postgres 등)가 있습니다.

SELECT id || '' FROM some_table;

연결은 암시 적 변환을 수행합니다.


답변

정수 열 xa varchar열 을 비교하는 문제를 해결했습니다.

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


답변

사용하다 :

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


답변

나는 이것을 일반적인 용어로 대답 할 것이며, 위의 기여자들에게 매우 감사합니다.
MySQL Workbench에서 MySQL을 사용하고 있습니다. 방법을 사용하여 a char와 a를 int함께 연결하려는 비슷한 문제가 발생했습니다 GROUP_CONCAT. 요약하면, 나를 위해 일한 것은 다음과 같습니다.

당신 char이 ‘c’이고 int‘i’ 라고 가정 해 봅시다 . 그러면 쿼리는 다음과 같습니다.
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...