选择前如何检查字段


How can I check field before selecting?

>我有这样的表格:

// Names
+----+--------+------------+
| id |  name  | visibility |
+----+--------+------------+
| 1  | Alex   | 1          |
| 2  | Jack   | 0          |
| 3  | Peter  | 1          |
+----+--------+------------+

我想选择 name ,但我需要在选择之前检查其visibility。换句话说,我希望它在可见性1时返回名称,如果可见性0则返回null。如何在查询中执行此操作?

SELECT (check visibility here) AS name FROM Names WHERE id = :id;

我可以通过PHP做到这一点,就像这样:

if ($result['visibility'] == 1) {
    $name = $result['name'];
} else {
    $name = null;
}

但我想通过纯sql来做到这一点。

您可以使用等效于 MySQL 中case表达式的if

SELECT if(visibility=1,name,null) name FROM Names WHERE id = :id
您可以使用

CASE语句:

Select  Case When Visibility = 1 Then Name Else Null End As Name
From    Names
Where   Id = :id;

一个简单的

问题
SELECT name FROM Names WHERE id = :id AND visibility = 1;

你只需要对结果处理进行编码,以期望不返回任何行的可能性,这告诉你这个人不应该是可见的,而且它不会返回任何关于他们的信息

正如我评论的那样,使用IF条件。

SELECT IF(visibility=1, name, NULL) AS name FROM Names WHERE id = :id;