以下のクエリがあり、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を参照してください - 実際には 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 )あなただけにキャストすることができます:
私はあなたの最善の策は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;
連結は暗黙の変換を行います。
整数型の列x varchar
列を次のものと比較することで問題を解決しました。
where CAST(Column_name AS CHAR CHARACTER SET latin1 ) collate latin1_general_ci = varchar_column_name
私はこれに一般的な言葉で答えるつもりです、そして上記の貢献者にとても感謝しています。
私はMySQL WorkbenchでMySQLを使用しています。 GROUP_CONCAT
メソッドを使ってchar
とint
を連結しようとしたときにも、同様の問題がありました。要約すると、私のために働いてきたのはこれです:
あなたのchar
が 'c'でint
が 'i'だとしましょう。そのため、クエリは次のようになります。...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...
つかいます :
SELECT cast(CHAR(50),id) as colI1 from t9;