Select 参数,如果满足条件
Select parameters if a condition is fulfilled
如果满足我的条件,我想 select 特定元素。请看下面我的代码。如何 select CASE 子句中的数据?我的方法不行
CREATE PROCEDURE [dbo].[GetUsers]
@firstName varchar(100) = '',
@isCounterSelected int,
@countries dbo.tvp_stringArray READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT [PK_UserID] AS Id
,[UserNickName]
,[description]
,CASE
WHEN @isCounterSelected = 1 THEN (NULL AS MCount, NULL AS GCount, NULL AS CCount)
ELSE ''
END
FROM [dbo].[User_Existing]
WHERE (@firstName NOT LIKE '' AND firstName LIKE @firstName + '%')
AND Country IN (SELECT inputValue FROM @countries)
我认为这会修复语法错误:
CREATE PROCEDURE [dbo].[GetUsers]
@firstName varchar(100) = '',
@isCounterSelected int,
@countries dbo.tvp_stringArray READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT [PK_UserID] AS Id
,[UserNickName]
,[description]
,CASE
WHEN @isCounterSelected = 1 THEN NULL
ELSE ''
END AS MCount
,CASE
WHEN @isCounterSelected = 1 THEN NULL
ELSE ''
END AS GCount
,CASE
WHEN @isCounterSelected = 1 THEN NULL AS CCount
ELSE ''
END AS CCount
FROM [dbo].[User_Existing]
WHERE (@firstName NOT LIKE '' AND firstName LIKE @firstName + '%')
AND Country IN (SELECT inputValue FROM @countries)
END
如果满足我的条件,我想 select 特定元素。请看下面我的代码。如何 select CASE 子句中的数据?我的方法不行
CREATE PROCEDURE [dbo].[GetUsers]
@firstName varchar(100) = '',
@isCounterSelected int,
@countries dbo.tvp_stringArray READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT [PK_UserID] AS Id
,[UserNickName]
,[description]
,CASE
WHEN @isCounterSelected = 1 THEN (NULL AS MCount, NULL AS GCount, NULL AS CCount)
ELSE ''
END
FROM [dbo].[User_Existing]
WHERE (@firstName NOT LIKE '' AND firstName LIKE @firstName + '%')
AND Country IN (SELECT inputValue FROM @countries)
我认为这会修复语法错误:
CREATE PROCEDURE [dbo].[GetUsers]
@firstName varchar(100) = '',
@isCounterSelected int,
@countries dbo.tvp_stringArray READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT [PK_UserID] AS Id
,[UserNickName]
,[description]
,CASE
WHEN @isCounterSelected = 1 THEN NULL
ELSE ''
END AS MCount
,CASE
WHEN @isCounterSelected = 1 THEN NULL
ELSE ''
END AS GCount
,CASE
WHEN @isCounterSelected = 1 THEN NULL AS CCount
ELSE ''
END AS CCount
FROM [dbo].[User_Existing]
WHERE (@firstName NOT LIKE '' AND firstName LIKE @firstName + '%')
AND Country IN (SELECT inputValue FROM @countries)
END