0
我有一个包含计算列的视图。有没有办法将它转换为CHAR或VARCHAR而不是VARBINARY?很显然,我尝试使用CAST(...作为CHAR),但它给出了一个错误。在MySQL视图中投射计算列
这里是一个简单的可复制的例子。
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;
这是我的视图是如何创建的:
describe view_example;
+---------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+---------------+------+-----+---------+-------+
| calculated_field_id | varbinary(27) | YES | | NULL | |
+---------------------+---------------+------+-----+---------+-------+
select version();
+-----------------------+
| version() |
+-----------------------+
| 5.0.51a-community-log |
+-----------------------+
谢谢巴里。我从你的解决方案中删除了''“+',它对我很好。 (包含空的引号,我只得到返回的第一个字符。) CREATE VIEW view_example AS SELECT CAST(concat_ws('_',lpad(9,3,'0'),lpad(1,3,'0 '),date_format(now(),'%Y%m%d%H%i%S'))AS CHAR)AS calculated_field_id; – 2010-06-03 03:06:57
奇怪。我以为你说CAST给了你一个错误。我认为添加空字符串可能会消除该错误。 – barrycarter 2010-06-03 13:56:53
它看起来像CAST给出了一个错误,因为我使用CAST(... AS VARCHAR) - 事实证明我需要CAST(... AS CHAR)。恰巧它将该字段定义为VARCHAR。 – 2010-06-03 23:50:58