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(或位)字段.如何/在哪里可以转换它?
谢谢.
钻到位?
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)
也许是 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)