mysql - 将列组合成一个大列

时间:2011-02-13 20:09:28

标签: sql mysql

我有一张地址表... 街道地址,城市,州和压缩 我需要街道地址城市州和一列任何想法拉链

4 个答案:

答案 0 :(得分:6)

你可以连接它们

SELECT CONCAT(address, '  ', city, ', ', state, ' ', zip) FROM table;

如果您希望将来或其他用户更方便,请考虑创建执行此操作的表格视图,并将其作为名为location的列等提供。

答案 1 :(得分:2)

如果您需要将合并后的值存储在表格中,请使用

UPDATE address SET bigcolumn = CONCAT(streetaddress, ', ', city, ', ', state, ' ', zip);

答案 2 :(得分:2)

这会对您有所帮助:string-functions

将列值与所需的分隔符连接。 因此,您的案例中的示例查询可以是:

SELECT CONCAT(street-address, '\n', city, ', ',state,'-',zip) as full_address FROM table;

答案 3 :(得分:2)

我不建议您将所有这些列放入一列。您可能希望稍后按城市或州或其他单个列进行搜索,并将它们作为单独的字段进行搜索会更容易。您可以根据之前的建议将字段作为SELECT语句的一部分进行连接,或者更好的是,如果它是经常完成的事情,您可以创建一个连接字段的VIEW然后选择视图,或者您可以简单地创建一个存储函数,它将连接字段并将该函数作为SELECT语句的一部分进行调用。这样的事情应该有效。

CREATE FUNCTION CONCAT_ADDRESS (p_id INT)
  RETURNS VARCHAR(255)
  BEGIN
  DECLARE v_street,v_city,v_state,v_zip, address VARCHAR(255);
  SELECT street_address, city, state, zip 
  INTO v_street,v_city,v_state,v_zip
  FROM table WHERE id = p_id;
  SET address = CONCAT(v_street,', ', v_city,', ', v_state,', ', v_zip);
  RETURN address;
END |

创建函数后,您可以随时将其用作SELECT语句的一部分,如下所示:

SELECT id, name, surname, CONCAT_ADDRESS(id) FROM table;
相关问题