簡體   English   中英

MySQL根據表列中的值返回不同的字符串

[英]MySQL return different string based on values in table columns

我創建了以下用於提取用戶首選名稱的函數:

public function getPreferredName($unique_id) {

    $sql = "SELECT CONCAT(first_name, ' ', last_name) as name FROM `{$this->table}` WHERE `unique_id` = ? LIMIT 1";
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute([$unique_id]);

    if ($stmt->rowCount() == 0) return null;

    $preferredName = $stmt->fetchColumn();

    return $preferredName;

}

該表是由個人和公司組成的“用戶”表。

我想在此查詢中考慮一些其他字段:

  • “display_as”(個人或公司)
  • “company_name”(在display_as = company時使用)

現在我想修改上面的方法,根據“display_as”列的值是否等於“個人”或“公司”,返回名字和姓氏或公司名稱。

如果“display_as”等於“individual”,則返回first_name和last_name字段。

如果“display_as”等於“company”,則返回company_name字段。

如何修改上述方法以同時返回first_name和last_name,或者根據“display_as”列返回company_name值?

謝謝您的幫助。 干杯

你可以使用MySQL IF函數

$sql = "Select If(`display_as` = 'individual',
        CONCAT(IFNULL(first_name,''), ' ', IFNULL(last_name,''))
       ,`company_name`) as name FROM `{$this->table}` WHERE `unique_id` = ? LIMIT 1";

這是有效的,因為您只有兩個選項,個人或公司。
如果您有更多選項,則必須case when構造case when使用case when

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM