【问题标题】:CONCAT multiple fields to a single field, single spacedCONCAT 多个字段到单个字段,单行距
【发布时间】:2012-11-22 15:22:45
【问题描述】:

我正在尝试连接 first middle maidenlast 名称字段,并使用它来更新名为 fullname 的单个字段

对于每个用户,可以填写这 4 个字段的任意组合。从 0 到全部 4。 但是,我还需要在每个名称之间留一个空格(不是多个空格)。

UPDATE nameTable SET fullname = CONCAT(first, middle, maiden, last);

【问题讨论】:

    标签: mysql concat


    【解决方案1】:

    空字符串解决方案 TRIM(BOTH ' ' FROM CONCAT_WS(' ', first, middle, maiden, last))

    http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim

    【讨论】:

      【解决方案2】:

      MySQL 有 CONCAT_WS - 用分隔符连接

      CONCAT_WS(' ', first, middle, maiden, last);
      

      http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws

      正如下面andr 所指出的,确保所有连接的字段都包含NULL 而不是空字符串(''),否则输出中会出现双倍空格。

      小提琴:http://sqlfiddle.com/#!2/1fe83/1

      进一步申请

      因此,如果您将来使用此函数创建一个小的 CSV 列表,请小心,因为您不会得到 NULL 字段的逗号。您必须在每个可为空的列周围做一个 COALESCE(column, '') 包装器。

      【讨论】:

      • 完全正确。我正要推荐 concat_ws() - 只需确保空名称具有 NULL 值而不是 ''(空字符串)。
      猜你喜欢
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 2021-11-15
      • 2022-10-04
      相关资源
      最近更新 更多