SQL - 基于记录中的布尔值更改查询输出

Posted

技术标签:

【中文标题】SQL - 基于记录中的布尔值更改查询输出【英文标题】:SQL - Alter query output based a boolean in the record 【发布时间】:2017-07-12 15:45:32 【问题描述】:

我有一个包含员工联系信息的 MS Access 表,员工维护自己的记录,任何人都可以访问数据库。我需要两个返回电话列表的查询。第一个只是简单地返回所有名称和数字。

SELECT LastName, FirstName, HomePhone, MobilePhone FROM StaffDetails ORDER BY ASC;

对于第二个,表中有一个布尔列,称为 PrivateNumbers。如果工作人员已将他们的号码设置为私人号码,我希望查询将它们标记为私人号码。那么,我是否可以编写一个 SQL 查询来查看布尔值,然后在查询结果中将 HomePhone 和 MobilePhone 更改为“Private”?

理论上,如果任何员工查看电话列表,私人号码就会被列出。如果管理层看,他们就会看到一切。

【问题讨论】:

这对techonthenet.com/access/functions/advanced/switch.php有帮助吗? 查看IIF()条件逻辑函数。 【参考方案1】:

您必须对此进行测试,因为我无权访问您的数据库,但在您的 sql 中添加 case 语句可以解决您的问题。

SELECT 
    LastName
    ,FirstName
    ,IIF(PrivateNumbers, 'Private',HomePhone) AS HomePhone
    ,IIF(PrivateNumbers, 'Private',MobilePhone) AS MobilePhone 
FROM StaffDetails 
ORDER BY ASC;

【讨论】:

不要认为 access 在 SQL 中支持大小写;他们称之为开关之类的:***.com/questions/14920116/… 得到一个循环引用错误,最后是“AS HomePhone”。从两个语句中删除了那个 AS 并且它工作得很好。非常感谢。

以上是关于SQL - 基于记录中的布尔值更改查询输出的主要内容,如果未能解决你的问题,请参考以下文章

sql查询中case语句中的布尔值

针对 LINQ To SQL 查询中的位字段评估布尔值

SQL CE select语句中的反向布尔(位)值

布尔值到字符串的聚合更改值

如何在 SQL 中设置布尔值

将 SQL Server 中的 SELECT 中的布尔值转换为 C# 中的布尔值?