【问题标题】:MySQL syntax for conditional CONCAT depending on a field content?取决于字段内容的条件CONCAT的MySQL语法?
【发布时间】:2013-11-28 09:03:06
【问题描述】:

我从客户那里继承了一个简单的表,该表仅在两个字段 shipping_address 和 business_address 中存储了两个地址(送货地址和公司地址)。有一个名为 ship_to 的字段带有 enum('shipping','business'),还有一个字段用于全名。客户希望输出如下:

全名:地址

其中“地址”列应由 ship_to 值选择。如果 ship_to = shipping 则使用 shipping_address 列。如果 ship_to = business 则使用 business_address 列。

例如:

Joe Smith: Roach Street #10, Rats Village

如何在 IF 条件下使用 CONCAT?我猜测是这样的,这显然只是一个想法:

SELECT CONCAT( full_name, ':', IF (ship_to=='shipping', shipping_address, business_address ) AS contact FROM `table`

但是,这样做的正确语法是什么?

【问题讨论】:

  • 你缺少一个结束 ) 并且在 SQL 中比较是用单个 = 而不是 == 完成的
  • 我刚刚尝试过,但只有在我为字段添加前缀时才有效,就是这样,如果我指定 table.full_name、table.ship_to、table.shipping_address 和 table.business_name...我想知道这是否真的需要或者这是一种服务器问题?没有桌子根本行不通。
  • @AramAlvarez 如果未指定表名前缀,会产生什么样的错误?
  • #1054 - '字段列表'中的未知列'shipping_address'
  • 非常混乱的情况。你试过CASE而不是IF吗?还有你在 mysql 控制台中运行查询吗?

标签: mysql if-statement conditional-statements concat


【解决方案1】:

缺少结束)

SELECT 
CONCAT( full_name, ':', IF (ship_to='shipping', shipping_address, business_address )) as    contact
FROM TableName

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 2011-05-25
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多