SQL [Преобразование в bool] - PullRequest
       12

SQL [Преобразование в bool]

3 голосов
/ 22 января 2010

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

Материал об этом запросе

в моем запросе со строкой SQL:

FlowClientHardQ  :ID_User, :ID_ListGroupParIzm

затем DataSource и DBGrid с полями CheckBox. Источник

Так что мне нужно поле bool (или бит) из моего ADO Query. Как / Где я могу преобразовать это?

Спасибо.

Ответы [ 2 ]

9 голосов
/ 22 января 2010

В ролях?

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

Но нельзя ли переписать запрос таким образом, чтобы избежать подзапроса:

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
3 голосов
/ 22 января 2010

Может быть, АКТЕР БИТ?

SELECT CAST(COALESCE(NULL,1) AS BIT)

UPDATE Вы также можете использовать ISNULL (). SELECT CAST(ISNULL(NULL,1) AS BIT)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...