【问题标题】:mysql - combining columns into one big columnmysql - 将列组合成一个大列
【发布时间】:2011-06-26 13:43:23
【问题描述】:

我有一张地址表... 街道地址、城市、州和邮编 我需要城市州的街道地址并将任何想法压缩在一个列中

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

    你可以连接它们

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我也不建议您将所有这些列放在一列中。您可能希望稍后按城市或州或其他单个列之一进行搜索,并将它们作为单独的字段会容易得多。您可以像前面建议的那样将字段连接为 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;
        

        【讨论】:

          【解决方案4】:

          这对你有帮助:string-functions

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-10-30
            • 2013-11-10
            • 2022-08-18
            • 2014-10-12
            • 2013-02-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多