呃汗,问题还没搞清楚就急着把这个贴子结了,
http://topic.csdn.net/u/20091115/16/ae3fa852-32d7-4c97-ac9f-44e33ed3d382.html?154770355这里再开一贴问吧。。解释一下为什么mysql5里面select 1 union select 'a'
结果就是
1
a
呢,a为什么没有被转换? MYSQL到底是如何进行数据类型的转换的呢? 我在官网上没找到这东西呃,, 全是鸟语,也看不大懂。。

解决方案 »

  1.   

    mysql> create table test as select 1 union select 'a';
    Query OK, 2 rows affected (0.17 sec)
    Records: 2  Duplicates: 0  Warnings: 0mysql> desc test;
    +-------+--------------+------+-----+---------+-------+
    | Field | Type         | Null | Key | Default | Extra |
    +-------+--------------+------+-----+---------+-------+
    | 1     | varbinary(1) | NO   |     |         |       |
    +-------+--------------+------+-----+---------+-------+
    1 row in set (0.06 sec)mysql>换成binary 了。mysql> create table test2 as select 'a' union select 1;
    Query OK, 2 rows affected (0.11 sec)
    Records: 2  Duplicates: 0  Warnings: 0mysql> desc test2;
    +-------+---------------+------+-----+---------+-------+
    | Field | Type          | Null | Key | Default | Extra |
    +-------+---------------+------+-----+---------+-------+
    | a     | varbinary(20) | NO   |     |         |       |
    +-------+---------------+------+-----+---------+-------+
    1 row in set (0.00 sec)mysql>
      

  2.   

    mysql> create table test3 as select 1 union select 2;
    Query OK, 2 rows affected (0.30 sec)
    Records: 2  Duplicates: 0  Warnings: 0mysql> desc test3;
    +-------+------------+------+-----+---------+-------+
    | Field | Type       | Null | Key | Default | Extra |
    +-------+------------+------+-----+---------+-------+
    | 1     | bigint(20) | NO   |     | 0       |       |
    +-------+------------+------+-----+---------+-------+
    1 row in set (0.00 sec)mysql>mysql> create table test4 as select 'a' union select 'a';
    Query OK, 1 row affected (0.11 sec)
    Records: 1  Duplicates: 0  Warnings: 0mysql> desc test4;
    +-------+------------+------+-----+---------+-------+
    | Field | Type       | Null | Key | Default | Extra |
    +-------+------------+------+-----+---------+-------+
    | a     | varchar(1) | NO   |     |         |       |
    +-------+------------+------+-----+---------+-------+
    1 row in set (0.00 sec)mysql>
      

  3.   

    都是按照ascii字符进行处理的,所以不必进行转换。
    不信,可以使用select md5(1)和select md5('1')比较一下。
    结果相同。