136

以下のクエリがあり、にキャスト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;

しかし、それらは機能しません。提案してください。

4

8 に答える 8

247

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)

元のクエリの構文は逆になっています。

于 2013-03-12T18:09:24.210 に答える
38

VARCHARキャストするのに有効なタイプではないため、これを取得しています。MySQLのドキュメント(http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast)によると、キャストできるのは次の場所のみです。

  • BINARY [(N)]
  • CHAR [(N)]
  • 日にち
  • 日付時刻
  • DECIMAL [(M [、D])]
  • 署名済み
  • [整数]
  • 時間
  • 未署名[整数]

私はあなたの最善の策はを使用することだと思いますCHAR

于 2013-03-12T18:08:42.157 に答える
19

はい

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

postgresqlですが、mySqlでは許可されていません。

mySqlのショートカット:

SELECT concat(id, '') FROM some_table;
于 2015-09-12T18:08:32.807 に答える
3

私はMySQLを持っていませんが、ハックを使用できるRDBMS(Postgresなど)があります

SELECT id || '' FROM some_table;

連結は暗黙的な変換を行います。

于 2013-03-13T06:24:22.563 に答える
2

varchar整数列xa列をと 比較する際の問題を解決しました

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

于 2016-05-18T01:51:34.047 に答える
0

使用する :

SELECT cast(CHAR(50),id) as colI1 from t9;
于 2013-03-12T18:08:28.850 に答える
0

私はこれに一般的な言葉で答えます、そして上記の貢献者に非常に感謝します。
MySQLWorkbenchでMySQLを使用しています。メソッドを使用してcharとを連結しようとすると、同様の問題が発生しました。要約すると、私にとってうまくいったのはこれです: あなたが「c」で「i」であるとしましょう。したがって、クエリは次のようになります。intGROUP_CONCAT

charint
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...

于 2018-03-16T21:01:14.597 に答える
0

このようなこともできるはずです:

Select (id :> VARCHAR(10)) as converted__id_int
from t9 
于 2020-04-03T17:25:00.123 に答える