2010-06-02 80 views
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 | 
+-----------------------+ 

回答

0

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;

我不知道爲什麼。如果你離開演員陣容,它會變成雙重的。 MySQL:笑一分鐘。

+0

謝謝巴里。我從你的解決方案中刪除了''「+',它對我很好。 (包含空的引號,我只得到返回的第一個字符。) 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

+0

奇怪。我以爲你說CAST給了你一個錯誤。我認爲添加空字符串可能會消除該錯誤。 – barrycarter 2010-06-03 13:56:53

+0

它看起來像CAST給出了一個錯誤,因爲我使用CAST(... AS VARCHAR) - 事實證明我需要CAST(... AS CHAR)。恰巧它將該字段定義爲VARCHAR。 – 2010-06-03 23:50:58