SQL [转换为bool]

cnd*_*cnd 3 sql t-sql sql-server stored-procedures casting

C++ Builder ADOQuery SQLServer

我正在使用这个选择的存储过程

SELECT  Name,
        COALESCE(
        (
        SELECT  TOP 1 0
        FROM    TbUserParam
        WHERE   TbUserParam.ID_User = @ID_User
                AND TbUserParam.ID_Param = CfgListParIzm.ID_ListParIzm
        ), 1) Visi
FROM    CfgListParIzm
WHERE   CfgListParIzm.ID_ListGroupParIzm = @ID_ListGroupParIzm
Run Code Online (Sandbox Code Playgroud)

关于这个查询的东西

在我的查询中使用SQL字符串:

FlowClientHardQ  :ID_User, :ID_ListGroupParIzm
Run Code Online (Sandbox Code Playgroud)

然后使用CheckBox字段的DataSource和DBGrid.资源

所以我需要一个来自我的ADO查询的bool(或位)字段.如何/在哪里可以转换它?

谢谢.

gbn*_*gbn 9

钻到位?

SELECT  Name,
        CAST(
        COALESCE(
        (
        SELECT  TOP 1 0
        FROM    TbUserParam
        WHERE   TbUserParam.ID_User = @ID_User
                AND TbUserParam.ID_Param = CfgListParIzm.ID_ListParIzm
        ), 1) as bit) Visi
FROM    CfgListParIzm
WHERE   CfgListParIzm.ID_ListGroupParIzm = @ID_ListGroupParIzm
Run Code Online (Sandbox Code Playgroud)

但是你可以不重写查询,以避免子查询:

SELECT
    C.Name,
    CAST(CASE WHEN T2.ID_Param IS NULL THEN 0 ELSE 1 END as bit) AS Visi
FROM
    CfgListParIzm C
    LEFT JOIN
    (
    SELECT
        T.ID_Param
    FROM
        TbUserParam T
    WHERE
        T.ID_User = @ID_User
    ) T2 On T2.ID_Param = C.ID_ListParIzm
WHERE
    C.ID_ListGroupParIzm = @ID_ListGroupParIzm
Run Code Online (Sandbox Code Playgroud)


Lia*_*iao 6

也许是 CAST 到 BIT?

SELECT CAST(COALESCE(NULL,1) AS BIT)
Run Code Online (Sandbox Code Playgroud)

UPDATE 您也可以使用 is ISNULL() 。 SELECT CAST(ISNULL(NULL,1) AS BIT)