簡體   English   中英

“Order By”附近的語法錯誤 - '關鍵字'ORDER'附近的語法不正確。'

[英]Syntax error near “Order By” - 'Incorrect syntax near the keyword 'ORDER'.'

我已經盯着這個太久了,我似乎看不出我哪里出錯了。

我有一個存儲過程,它必須返回一堆數據,其中“ExtractedText”與該人正在搜索的詞相匹配:

Select @Command = 'select DISTINCT CaseFileEvents.InvestigatorID,convert(nvarchar,EventDate,111) as ''EventDate'',EventTime,EventDesc,TaskID,Privileged,Private,Email,HasAttachments,FName,LName, FName + '' '' + LName as Name ,CaseFileEvents.FileID,CaseFiles.FileName,ItemEntryGradeID, EventDescPlainText
                from CaseFileEvents
                join ......

                WHERE '+ @FilterField +' LIKE ''%' + @FilterQuery + '%'' ORDER BY ' + @SortName + ' ' + @SortOrder + ''; this area seems to bug out

@FilterField 是其中一個表中的一列,@FilterQuery 是用戶輸入的要查找的詞。 @SortName,是它被排序的名稱。

命令示例:@FilterField = "ExtractedText"、@FilterQuery="something"、@SortName="EventID"、@SortOrder="desc"

這是錯誤:

消息 156,級別 15,狀態 1,第 10 行
關鍵字“ORDER”附近的語法不正確。

完整命令:

WHERE ExtractedText LIKE '%add%' ORDER BY EventID desc;

您不能按變量排序。 您需要使用動態 SQL:

SELECT
     *
FROM
     My_Table
WHERE
     Whatever = @something
ORDER BY
     CASE @sort_order
          WHEN 'ASC' THEN
               CASE @order_by
                    WHEN 'surname' THEN surname
                    WHEN 'forename' THEN forename
                    WHEN 'fullname' THEN fullname
                    ELSE surname
               END
          ELSE '1'
     END ASC,
     CASE @sort_order
          WHEN 'DESC' THEN
               CASE @order_by
                    WHEN 'surname' THEN surname
                    WHEN 'forename' THEN forename
                    WHEN 'fullname' THEN fullname
                    ELSE surname
               END
          ELSE '1'
     END DESC

看看這個帖子:

我可以將 SQL Server 排序順序存儲在變量中嗎?

它不起作用的原因是因為我錯過了WHERE EventID = convert(nvarcahr,@EventID)並且剛剛取出了“DISTINCT”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM