SQL [Convert to bool]

C ++ Builder ADOQuery SQLServer

I am using a stored procedure with this select

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 

Details for this request

in my query with SQL string:

 FlowClientHardQ :ID_User, :ID_ListGroupParIzm 

and then DataSource and DBGrid with CheckBox fields. Source

So, I need a bool field (or bit) from my ADO Query. How / Where can I convert it?

Thanks.

+4
source share
2 answers

Paste in a bit?

 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 

But can you rewrite the query in such a way as to avoid the subquery:

 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 
+10
source

Maybe CAST for BIT?

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

UPDATE You can use ISNULL (). SELECT CAST(ISNULL(NULL,1) AS BIT)

+3
source

Source: https://habr.com/ru/post/1299081/


All Articles