我已经创建其使用GROUP_CONCAT来自以数据类型上的产品列的查询串联结果的图'varchar(7) utf8_general_ci'
在名为柱concat_products
。 问题是,MySQL的截断concat_products列的值。 说成功运行concat_products列的数据类型是varchar(341) utf8_bin
台产品:
CREATE TABLE `products`(
`productId` tinyint(2) unsigned NOT NULL AUTO_INCREMENT,
`product` varchar(7) COLLATE utf8_general_ci NOT NULL,
`price` mediumint(5) unsigned NOT NULL,
PRIMARY KEY (`productId`))
ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci
concat_products_vw查看:
CREATE VIEW concat_products_vw AS
SELECT
`userId`,
GROUP_CONCAT(CONCAT_WS('_', `product`, `productId`, `price`)
ORDER BY `productId` ASC SEPARATOR '*') AS concat_products
FROM
`users`
LEFT JOIN `products`
ON `users`.`accountBalance` >= `product`.`price`
GROUP BY `productId`
根据MySQL手册
在VARCHAR列中的值是可变长度字符串
长度可以被指定为从1到255的MySQL 4.0.2之前0至255的数值,例如MySQL 4.0.2的。
编辑:
Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 65,535.
为什么mysql的指定VARCHAR列concat_products超过255个字符?(解决了!)
为什么uf8_bin代替utf8_general_ci?
是否有可能改变一个列的数据类型在视图例如在我的情况下,以文本concat_products列?
如果不是我能做些什么来防止MySQL的从截断concat_products列?