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 |
+-----------------------+
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; –
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
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. –