select concat(400,'aaa')
要是连接中文的话 select concat(400,'呵呵')也没问题 可是问题在这里create table article
(
title varchar(25)
);insert into article values (concat(100,'可以'));mysql> select * from article;//
+-------+
| title |
+-------+
| 100 |
+-------+
1 row in set (0.00 sec)
这里的中文跑到哪里去了???? 实在不明白
要是连接中文的话 select concat(400,'呵呵')也没问题 可是问题在这里create table article
(
title varchar(25)
);insert into article values (concat(100,'可以'));mysql> select * from article;//
+-------+
| title |
+-------+
| 100 |
+-------+
1 row in set (0.00 sec)
这里的中文跑到哪里去了???? 实在不明白
不知道是不是这个问题
SHOW WARNINGS;
看一下警告是什么。估计是你的字符集设计有问题。检查一下表的字符集, 或者直接 show create table article ;然后看一下相关的字符集设置 show variables like 'char%';
-> //
+---------+---------------------------
-----------------------------+
| Table | Create Table
|
+---------+---------------------------
-----------------------------+
| article | CREATE TABLE `article` (
`title` varchar(25) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+---------------------------
-----------------------------+
-> //
+---------+------+--------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------+
| Warning | 1265 | Data truncated for column 'title' at row 1 |
+---------+------+--------------------------------------------+
1 row in set (0.00 sec)
set names 'utf8';
我把 字符集 改成 gb2312 就可以了
只要concat的某一成员不是字符型, 如数字,日期, mysql字符的自动转换机制就不灵了.
改为
insert into article values (concat('100','可以')); 不会有问题或改为
insert into article values (concat(100,convert('可以' using utf8))); 不会有问题
或改为
insert into article values (concat(100,convert('可以' using gbk))); 也不会有问题