如何修复/避免concat在mysql上的编码混乱?

dgtucam1  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(164)

情况是这样的:我有一个名为“product”的表,其中有一个名为“code”的字段( integer )还有一个叫“name”( varchar ). 这个 varchar 字段用utf8编码,这是正确的编码。到目前为止一切都很好。
问题开始了,因为我必须不断地 concat “代码”和“名称”字段。这种情况经常发生,而且排得很多。由于某种原因,将这些内容合并会扰乱 concat 结果,导致有趣的人物出现在屏幕上。通过添加 castchar 在concat的“name”字段中,但我担心随着系统的扩展,它可能会导致性能问题,因为我在结果集的每一行上调用一个函数。
有什么我可以做我的“产品”表,以消除需要不断铸造?也许配置mysql总是为其concat结果选择特定的编码?
mysql版本:5.0.51a。遗憾的是我不能更新它。
create table语句:

CREATE TABLE product (
    id_product int(11) NOT NULL auto_increment,
    code int(8) NOT NULL,
    name varchar(255) character set utf8 NOT NULL,
    id_unit int(11) NOT NULL,
    PRIMARY KEY  (id_product),
    KEY id_unit (id_unit),
    CONSTRAINT product_ibfk_1 FOREIGN KEY (id_unit) REFERENCES unit (id_unit) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=26

导致加扰编码的查询是:

SELECT
    CONCAT(code, ' - ', name)
FROM product

我用上述查询创建了一个视图,它声明(在phpmyadmin上)结果列是一个没有任何编码的varbinary。也许这就是问题的原因?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题