2010-06-02 4 views
0

J'ai une vue qui contient une colonne calculée. Y a-t-il un moyen de le transformer en CHAR ou en VARCHAR plutôt qu'en VARBINAIRE? Évidemment, j'ai essayé d'utiliser CAST (... comme CHAR) mais cela donne une erreur.Lancer une colonne calculée dans une vue MySQL

Voici un exemple réplicable simple.

CREATE VIEW view_example AS 
SELECT concat_ws('_', lpad(9, 3,'0'), lpad(1,3,'0'), date_format(now(),'%Y%m%d%H%i%S')) 
AS calculated_field_id; 

Voici comment mon avis est créé:

describe view_example; 
+---------------------+---------------+------+-----+---------+-------+ 
| Field    | Type   | Null | Key | Default | Extra | 
+---------------------+---------------+------+-----+---------+-------+ 
| calculated_field_id | varbinary(27) | YES |  | NULL |  | 
+---------------------+---------------+------+-----+---------+-------+ 

select version(); 
+-----------------------+ 
| version()    | 
+-----------------------+ 
| 5.0.51a-community-log | 
+-----------------------+ 

Répondre

0

CREER VIEW view_example AS SELECT CAST ("" + CONCAT_WS ('_', lpad (9, 3, '0'), lpad (1,3, '0'), date_format (maintenant(), '% Y% m% d% H% i% S')) AS CHAR) AS calculate_field_id;

Je ne sais pas pourquoi. Si vous laissez le casting, il devient un double. MySQL: un rire une minute.

+0

Merci Barry. J'ai enlevé '"" +' de votre solution et cela a fonctionné pour moi bien. (Avec la citation vide incluse, j'obtenais seulement le premier caractère retourné.) CREATE VIEW view_example AS CHOISIR CAST (concat_ws ('_', lpad (9, 3, '0'), lpad (1,3, '0 '), date_format (maintenant(),'% Y% m% d% H% i% S ')) AS CHAR) AS calculate_field_id; –

+0

Bizarre. Je pensais que vous avez dit que CAST vous a donné une erreur. Je pensais que l'ajout de la chaîne vide pourrait éviter cette erreur. – barrycarter

+0

Il semble que CAST a donné une erreur parce que j'utilisais CAST (... AS VARCHAR) - il s'avère que j'avais besoin de CAST (... AS CHAR). Comme cela arrive, cela définit le champ comme VARCHAR. –

Questions connexes