我的一些专栏被截断了。经过一些研究,我设法创建了这个最小工作示例,适用于MySQL 5.0.96-community:
DROP TABLE IF EXISTS test;
CREATE TABLE test (
a char(3),
b char(3),
c smallint
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO test VALUES(
"אאא",
"בבב",
111);
SELECT CONCAT(a,b,c) FROM test;
// RESULT: "אאאבבב111"
DROP TABLE IF EXISTS test2;
CREATE TABLE test2 SELECT CONCAT(a,b,c) AS d FROM test;
SELECT d FROM test2;
// RESULT: "אאאבבב"
这是一个错误还是一个功能?
答案 0 :(得分:1)
CAST int
到char
。我希望,它会奏效。
CREATE TABLE test2 SELECT CONCAT(a,b,CAST(c AS CHAR)) AS d FROM test;
<强>更新强>
在Orbit评论中的Lightness Races之后,我为自己尝试了。通常,它工作得很好。但是,由于你的版本有点旧版本,它无效。
您可以按照以下方式使用它:
CREATE TABLE test2 (d char(9));
INSERT INTO test2
SELECT CONCAT(a,b,c) AS d FROM test;
请参阅sqlfiddle:http://sqlfiddle.com/#!8/d9433/1
答案 1 :(得分:0)
您未指定新表格应为UTF-8。
CREATE TABLE test2 CHARSET=utf8 SELECT CONCAT(a,b,c) AS d FROM test;
-- ^^^^^^^^^^^^^