用就怎麼用BETWEEN
運營商與CASE
聲明如何運營商之間有case語句在SQL Server 2005中
@FromEmpAge
@ToempAge
select * from Emp
where EmpAge between
case when ToempAge0 then @FromEmpAge and @ToempAge end
如何做到這一點?
用就怎麼用BETWEEN
運營商與CASE
聲明如何運營商之間有case語句在SQL Server 2005中
@FromEmpAge
@ToempAge
select * from Emp
where EmpAge between
case when ToempAge0 then @FromEmpAge and @ToempAge end
如何做到這一點?
不知道它是否工作 - 但如果它沒有,你就必須首先要確保正確完成您CASE
聲明!
SELECT
(list of columns)
FROM
dbo.Emp
WHERE
EmpAge BETWEEN
CASE (some column) | this is the first value
WHEN ToEmpAge0 THEN @FromEmpAge | for the BETWEEN ....
END | close the CASE
AND @ToempAge | this is the second value
的CASE
需要至少有一個WHEN....THEN....
,然後一個END
「關閉」,然後CASE
- 只有在這之後,你可以繼續走下去.....
但再次:不知道這是否會正常工作,甚至與「正確」的語法.....
我不知道你的意思ToEmpAge0
什麼。無論如何,marc_s已經回答了你的關於如何使用BETWEEN
運營商內部CASE
聲明,如果你把WHEN
後適當的文字值,將工作的問題。 您也可以使用CASE
語句作爲BETWEEN
運算符的第二個操作數。
我會認爲ToEmpAge
是INT
列:
SELECT
(list of columns)
FROM
dbo.Emp
WHERE
EmpAge BETWEEN
CASE ToEmpAge
WHEN 0 THEN @FromEmpAge
WHEN 1 THEN @FromEmpAge+10 --or whatever
END
AND
CASE ToEmpAge
WHEN 0 THEN @ToEmpAge
WHEN 1 THEN @ToEmpAge+5
END
SELECT *
FROM CTE
WHERE RN BETWEEN case @Excel when 0 then (@StartRow - cast(@NumberOfRows AS int)) else @NumberOfRows end
AND case @Excel when 0 then (@StartRow - 1) else @PageIndex end
DECLARE @StartRow INT
SET @StartRow = (cast(@PageIndex as int) * cast(@NumberOfRows as int)) + 1 ;
WITH CTE
AS (SELECT ROW_NUMBER() OVER (ORDER BY CASE
WHEN @SortColumnName = 'ID'
AND @SortOrderBy = 'asc'
THEN sod.ID
END ASC, CASE
WHEN @SortColumnName = 'ID'
AND @SortOrderBy = 'desc'
THEN sod.ID
END DESC, CASE
WHEN @SortColumnName = 'MessageText'
AND @SortOrderBy = 'asc'
THEN MessageText
END ASC, CASE
WHEN @SortColumnName = 'MessageText'
AND @SortOrderBy = 'desc'
THEN MessageText
END DESC, CASE
WHEN @SortColumnName = 'TO'
AND @SortOrderBy = 'desc'
THEN [TO]
END DESC
) AS RN ,
[SendedDate]
,[UserID]
,sod.[ID]
,[SmsOutboxID]
,[MessageID]
,[FolderID]
,[From]
,[TO]
,[MessageText]
,[SendedType]
,[SendedStatus]
,[IsDelete]
,[NumberOfMessage]
,[MessageType]
,[PricesbySMS]
,[Sended]
FROM SMS_Outbox so inner join SMS_OutboxDetails sod on so.ID = sod.SmsOutboxID where so.UserID = @UserID and sod.SendedType = @Type and sod.IsDelete = 0)
SELECT *
FROM CTE
WHERE RN BETWEEN case @Excel when 0 then (@StartRow - cast(@NumberOfRows AS int)) else @NumberOfRows end
AND case @Excel when 0 then (@StartRow - 1) else @PageIndex end
編寫一個查詢,將首字母顯示員工的名字大寫和小寫所有其他字母和部門沒有。對於其名稱的第二個字符介於'A'和'M'之間的所有員工,請給每個欄目一個適當的標籤。 我嘗試了一些不起作用的東西。我的工作代碼爲:
SELECT INITCAP(ename), deptno
FROM emp
WHERE ename LIKE BETWEEN ('_A%' AND '_M%');
如果您發佈的代碼或XML,** **請在高亮文本編輯器的線和編輯器工具欄上點擊「代碼」按鈕(101 010)很好地格式化和語法突出它! – 2010-12-07 08:54:57
這沒有任何意義。你想達到什麼目的? – 2010-12-07 08:58:13