J'ai ci - dessous requête et nécessité de casting id
àvarchar
Schéma
create table t9 (id int, name varchar (55));
insert into t9( id, name)values(2, 'bob');
Ce que j'ai essayé
select CAST(id as VARCHAR(50)) as col1 from t9;
select CONVERT(VARCHAR(50),id) as colI1 from t9;
mais ils ne fonctionnent pas. Veuillez suggérer.
Réponses:
Vous aurez besoin de
cast
ou enconvert
tant queCHAR
type de données, il n'y a pas devarchar
type de données vers lequel vous pouvez convertir / convertir des données:Voir le SQL suivant - en action - sur SQL Fiddle :
Outre le fait que vous essayiez de convertir en un type de données incorrect, la syntaxe que vous utilisiez
convert
était incorrecte. Laconvert
fonction utilise ce qui suit oùexpr
est votre colonne ou valeur:ou
Votre requête d'origine avait la syntaxe à l'envers.
la source
concat()
pour faire une conversion n'est pas forcément aussi intuitif. Je préférerais que mon code soit clair et cela n'a tout simplement pas beaucoup de sens.Vous obtenez cela parce que ce
VARCHAR
n'est pas un type valide dans lequel effectuer un cast. Selon la documentation MySQL ( http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast ), vous ne pouvez convertir que:Je pense que votre meilleur pari est d'utiliser
CHAR
.la source
Oui
est postgresql, mais mySql ne le permet pas!
raccourci dans mySql:
la source
Je n'ai pas MySQL, mais il existe des SGBDR (Postgres, entre autres) dans lesquels vous pouvez utiliser le hack
Le concaténat effectue une conversion implicite.
la source
J'ai résolu un problème de comparaison d'une colonne entière de colonne xa
varchar
avecwhere CAST(Column_name AS CHAR CHARACTER SET latin1 ) collate latin1_general_ci = varchar_column_name
la source
utilisation :
la source
Je vais y répondre en termes généraux, et je suis très reconnaissant aux contributeurs ci-dessus.
J'utilise MySQL sur MySQL Workbench. J'ai eu un problème similaire en essayant de concaténer un
char
et unint
ensemble en utilisant laGROUP_CONCAT
méthode. En résumé, ce qui a fonctionné pour moi est le suivant:disons que votre
char
est 'c' etint
est 'i', donc, la requête devient:...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...
la source
Devrait être capable de faire quelque chose comme ça aussi:
la source