首页 > 解决方案 > 为什么设置和声明参数后脚本不起作用?

问题描述

当我在不设置任何参数的情况下运行以下代码时,我得到了所需的输出

    SELECT * FROM (
    SELECT [CaseNumber]
          ,[EventCode]
          ,[EventDate]
          ,[Assigned]
          ,ROW_NUMBER() OVER (
                                    PARTITION BY CaseNumber
                                    ORDER BY CaseNumber,EventDate DESC,EventCode  
                            ) AS [ROW NUMBER] 
      FROM  [databasename].[dbo].[tblCsCaseEvents] 
      ) groups

    WHERE 1=1 
    AND (groups.[ROW NUMBER]=1) AND (Assigned IN ('PARKERE')) 
    AND  EventCode LIKE 'ba%'

但是,当我如下所示声明和设置变量并运行它时。该脚本似乎不起作用。为什么会这样?

Declare @attorney CHAR (10)
Declare @event CHAR (10)

set @attorney='PARKERE'
set @event='ba%'

SELECT * FROM (
SELECT [CaseNumber]
      ,[EventCode]
      ,[EventDate]
      ,[Assigned]
      ,ROW_NUMBER() OVER (
                                PARTITION BY CaseNumber
                                ORDER BY CaseNumber,EventDate DESC,EventCode  
                        ) AS [ROW NUMBER] 
  FROM  [databasename].[dbo].[tblCsCaseEvents] 
  ) groups

WHERE 1=1 
AND (groups.[ROW NUMBER]=1) AND (Assigned IN (@attorney)) 
AND  EventCode LIKE @event

标签: sqlsql-server

解决方案


char(<n>)定义一个长度正好的字符串<n>。如果字符串太短,则用空格填充。

这会影响一些比较,例如like. 相反,使用varchar().

是微软的解释。


推荐阅读