php - sql select如何调用函数?

标签 php mysql sql

我有 sql select,我需要对 status_bid 字段使用一些函数?像这样:

        SELECT 
             `N`.`_id` as `_id`,
             `N`.`created_at` as `created_at`,
             CASE
                WHEN `N`.`status_bid` = 1 THEN "'.$this->getBidStatusString(1).'"
                WHEN `N`.`status_bid` = 2 THEN "'.$this->getBidStatusString(2).'"
                WHEN `N`.`status_bid` = 3 THEN "'.$this->getBidStatusString(3).'"
                WHEN `N`.`status_bid` = 4 THEN "'.$this->getBidStatusString(4).'"
                WHEN `N`.`status_bid` = 5 THEN "'.$this->getBidStatusString(5).'"
                WHEN `N`.`status_bid` = 6 THEN "'.$this->getBidStatusString(6).'"
                WHEN `N`.`status_bid` = 10 THEN "'.$this->getBidStatusString(10).'"
                WHEN `N`.`status_bid` = 11 THEN "'.$this->getBidStatusString(11).'"                    
                ELSE "0"
             END as `status_bid`,                 
             ..........
             ..........

但是CASE WHEN ELSE END对我来说并不漂亮。怎么改成这样

    if (`N`.`status_bid` IS NOT NULL) {
        '".$this->getBidStatusString(`N`.`status_bid`).'" as `status_bid`  
    }

我有php函数

/**
 * @return string
 */
public function getBidStatusString($id)
{
    if (array_key_exists($id, Bit::getBidStatusSerialized())) {
        return Bit::getBidStatusSerialized()[$id];
    }
}

这在sql中可能吗?

最佳答案

不要在 SQL 中执行此操作。从 mysql 获取数据后迭代您的数据。或者,也许您可​​以在需要时调用 getBidStatusString。例如

<span><?=Bit::getBidStatusSerialized()[$data['id']]?>

关于php - sql select如何调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39345439/

相关文章:

php - 作为查询的一部分计数

mysql - 为什么在 MySQL 复制中使用 GTID?

php - 在 Symfony2 项目上使用外部非 PSR-0 库的正确方法

php - Mysql基于类别和分支的排名

PHP cookie 在页面更改时被删除?

mysql - 如何解决子查询多选返回多于1行错误

php - 使用 HelloAnalyticsApi 时调用 Google Analytics 中未定义的方法 Google_Client

php - mysql 计数函数问题

sql - 子字符串sql server

mysql - 排除列值上的连接记录?