情况是这样的:我有一个名为“product”的表,其中有一个名为“code”的字段( integer
)还有一个叫“name”( varchar
). 这个 varchar
字段用utf8编码,这是正确的编码。到目前为止一切都很好。
问题开始了,因为我必须不断地 concat
“代码”和“名称”字段。这种情况经常发生,而且排得很多。由于某种原因,将这些内容合并会扰乱 concat
结果,导致有趣的人物出现在屏幕上。通过添加 cast
至 char
在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。也许这就是问题的原因?
暂无答案!
目前还没有任何答案,快来回答吧!