【发布时间】:2011-06-26 13:43:23
【问题描述】:
我有一张地址表... 街道地址、城市、州和邮编 我需要城市州的街道地址并将任何想法压缩在一个列中
【问题讨论】:
我有一张地址表... 街道地址、城市、州和邮编 我需要城市州的街道地址并将任何想法压缩在一个列中
【问题讨论】:
你可以连接它们
SELECT CONCAT(address, ' ', city, ', ', state, ' ', zip) FROM table;
如果您希望将来为您或其他用户更方便,请考虑创建执行此操作的表视图并将其提供为名为 location 的列等。
【讨论】:
如果您需要将合并后的值存储在表中,请使用
UPDATE address SET bigcolumn = CONCAT(streetaddress, ', ', city, ', ', state, ' ', zip);
【讨论】:
我也不建议您将所有这些列放在一列中。您可能希望稍后按城市或州或其他单个列之一进行搜索,并将它们作为单独的字段会容易得多。您可以像前面建议的那样将字段连接为 SELECT 语句的一部分,或者更好的是,如果这是经常执行的操作,您可以创建一个连接字段的视图,然后选择视图,或者您可以简单地创建一个存储函数,它将连接字段并作为 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;
【讨论】:
这对你有帮助:string-functions
将列值与所需的分隔符连接起来。 因此,您的示例查询可以是:
SELECT CONCAT(street-address, '\n', city, ', ',state,'-',zip) as full_address FROM table;
【讨论】: