【问题标题】:How to retrieve a Character for a boolean field in SQL 2005如何在 SQL 2005 中检索布尔字段的字符
【发布时间】:2020-02-12 10:08:18
【问题描述】:

我正在尝试从 2005 版本的 SQL Server 中检索数据。如果在 VB 2008 中填充数据网格视图,则调用存储过程的程序。返回的字段之一是布尔字段。我将网格绑定到数据表,但我不想要布尔值。我想用 Y 表示真,N 表示假。下面查询中的布尔字段是 inventory.active 字段

    SELECT      inventory.inventory_id, equipment.description, 
            inventory.sale_date, 
            inventory.warranty_date, inventory.extended_warranty_date, 
            inventory.location,inventory.serial_number, inventory.IP_address, inventory.printer_name,  inventory.active 

我尝试过 iif(inventory.active,'Y','N') 但在尝试执行 Sproc 时不接受。

什么是正确的语法。我也尝试过 Case 陈述,但没有成功。

【问题讨论】:

    标签: sql sql-server sql-server-2005


    【解决方案1】:

    SQL Server 中没有boolean 数据类型;经常使用某种数字。大概,你想要一个case 表达式。我猜:

    (case when inventory.active = 1 then 'Y' else 'N' end)
    

    虽然它与您的问题无关,但您应该升级到受支持的 SQL Server 版本。 SQL Server 2005 已经过了好几年了。

    【讨论】:

    • A varbinary(1)(尽管你为什么要使用 varbinary 而不是 binary)@Hogan 的值可以从 0x00xF;它与布尔值不同。 SQL Server 中最接近布尔值的是bit;它的值可以是01NULL。但是,bit 不能用作布尔运算符。 DECLARE @b bit = 1; SELECT 1 WHERE @b; 会导致错误
    • @larnu -- 完全正确,我在想bit 类型,它就像一个布尔值。
    • 谢谢戈登。以为我已经尝试过了,但我一定没有正确。是的,该字段不是布尔值,而是有点。所以谢谢拉努
    猜你喜欢
    • 2018-03-26
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2010-12-19
    • 2019-01-20
    • 2010-10-15
    • 2022-07-31
    • 1970-01-01
    相关资源
    最近更新 更多