という名前の列GROUP_CONCAT
のデータ型を持つ製品列のクエリからの結果を連結するために使用するビューを作成しました。'varchar(7) utf8_general_ci'
concat_products
問題は、MySQL が「concat_products」列の値を切り捨てることです。phpMyAdmin によると、「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 カラムの値は可変長文字列です
長さは、MySQL 4.0.2 より前は 1 から 255、MySQL 4.0.2 では 0 から 255 の値として指定できます。
編集
Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 65,535.
varchar
MySQL が"concat_products" 列に 255 文字を超える文字を指定するのはなぜですか? (解決しました!)なぜ
uf8_bin
代わりにutf8_general_ci
?たとえば私の場合、ビューの列のデータ型を「concat_products」列のテキストに変更することは可能ですか?
そうでない場合、MySQL が「concat_products」列を切り捨てないようにするにはどうすればよいですか?