如何在同一个表中连接或拆分列VARCHAR类型

时间:2014-06-19 18:37:51

标签: mysql sql

MySQL的:

我有桌子:id, First_name (varchar), Last_name (varchar);

如何转换为表格:id, Name (varchar);

表:id, Address (varchar);

转换为:

表:id, Street_name(varchar), house_number(varchar), room_number(varchar);

换句话说,如何加入或拆分列VARCHAR类型?

1 个答案:

答案 0 :(得分:0)

1-加入是不可能的。如果我们假设您的第一个表是“originalTable”,那么您需要将两个字段连接起来并将所有内容放在一个名为t1的新表中,例如:

Select into t1 id, concat(First_name, last_name) as Name
    From originalTable

新表t1将自动创建两个字段(int和varchar)。

2-对于拆分,只要有三个非空​​子字段(Street_name,House_number和Room_number),您可以使用以下SQL代码:

SELECT 
    substring(Address, 1, locate(' ', Address)-1) as Street_name,

    substring(
        substring(Address FROM locate(' ', Address)+1), 
        1, 
        locate(' ', substring(Address FROM locate(' ', Address)+1))-1
        )   as House_number,

    substring(
        substring(
            Address FROM locate(' ', Address)+1
            )
        FROM locate(
            ' ', 
            substring(Address FROM locate(' ', Address)+1)
            )+1
        ) 
        as Room_number
From t1

有关此处使用的两个字符串函数(substring和locate)的详细信息,请参阅有关字符串函数的MySQL文档: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html