SELECT
*
FROM tblName
WHERE mode = '1' AND (category = @Category OR @Category = 'all' OR NewsId = @Category)
@Category='all' を渡しました。これは 0 行を返します。OR NewsId=@Category
この条件が追加されていない場合、クエリはすべての結果を返します
SELECT
*
FROM tblName
WHERE mode = '1' AND (category = @Category OR @Category = 'all' OR NewsId = @Category)
@Category='all' を渡しました。これは 0 行を返します。OR NewsId=@Category
この条件が追加されていない場合、クエリはすべての結果を返します
これを試してみてください -
mode = '1'
AND
(
@Category = 'all'
OR
@Category IN (category, CAST(NewsId AS VARCHAR(10)))
)
大きすぎるデータ型の長さを使用しないでください (つまり、MAX):
CREATE TABLE dbo.TBL_ContentsPage
(
NewsId INT IDENTITY(1001,1) NOT NULL PRIMARY KEY
, Header NVARCHAR(1024) NULL
, SmallImage IMAGE NULL
, TextContent NVARCHAR(2048) NULL
, PostedDate DATETIME NOT NULL DEFAULT(GETDATE())
, mode VARCHAR(50) NULL
, [status] VARCHAR(50) NULL
, category VARCHAR(200) NULL
, author NVARCHAR(1024) NULL
, imgRefID VARCHAR(50) NULL
)
ALTER PROCEDURE [dbo].[SPGetArticlePaging]
(
@startposition INT
, @stopposition INT
, @Category VARCHAR(200)
)
AS BEGIN
SELECT
NewsId
, Header
, TextContent
, author
, PostedDate
, category
, imgRefID
FROM (
SELECT
NewsId
, Header
, TextContent
, author
, PostedDate
, category
, DateRank = ROW_NUMBER() OVER(ORDER BY PostedDate DESC)
, imgRefID
FROM dbo.TBL_ContentsPage
WHERE mode = '1'
AND
(
@Category = 'all'
OR
@Category IN (category, CAST(NewsId AS VARCHAR(10)))
)
) t
WHERE DateRank BETWEEN @startposition AND @stopposition
RETURN 0
END