Mysql obcina połączony wynik funkcji GROUP_CONCAT
Utworzono widok, który używa GROUP_CONCAT do łączenia wyników z zapytania w kolumnie produktów z typem danych'varchar(7) utf8_general_ci'
w kolumnie o nazwieconcat_products
. Problem polega na tym, że mysql obcina wartość kolumny concat_products. phpMyAdmin mówi, że typ danych kolumny concat_products tovarchar(341) utf8_bin
produkty stołowe:
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 Wyświetl:
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`
zgodnie z podręcznikiem mysql
Wartości w kolumnach VARCHAR są łańcuchami o zmiennej długości
Długość można określić jako wartość od 1 do 255 przed MySQL 4.0.2 i 0 do 255 od MySQL 4.0.2.
edytować:
Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 65,535.
Dlaczego mysql określa więcej niż 255 znaków dla kolumny varchar concat_products? (Rozwiązane!)
Dlaczego uf8_bin zamiast utf8_general_ci?
Czy można zmienić typ danych kolumny w widoku na przykład w moim przypadku na tekst w kolumnie concat_products?
Jeśli nie, co mogę zrobić, aby zapobiec mysql z obcięciem kolumny concat_products?