SQL Server 2008 R2与like子句一起出现问题

时间:2013-02-02 05:58:18

标签: sql-server-2008-r2

我想在用户将选择的表的任何列上执行搜索。为此,我有两个字符串变量searchkey来存储列的名称,searchvalue用于要搜索的值。

这是我对此的查询:

and (Select Case @SearchKey 
            When 'Title' then Parcel.Title 
            When 'Unit_No' then Unit_No 
            When 'AgentName' then App_User.Name
            When 'TenantName' then Client_Personal_Information.First_Name
            When 'UnitRefNo' then Unit_Ref_No

                        End )  like @SearchValue

这个查询工作正常并给我所需的输出,因为所有列都有nvarchar类型的值。

但是当我在上面的查询中添加了这个

When 'Rent' then Unit_Transform.Rent_Per_Annum
When 'SecurityDeposit' then [Unit_Transform].[Security_Deposit] 

对于包含十进制值的列,它仅返回这两列的输出。如果我选择包含nvarchar值的列,则表示未找到记录。

任何想法为什么会发生这种情况。

1 个答案:

答案 0 :(得分:1)

我认为你需要像这样将你的十进制字段传递给varchar:

When 'Rent' then CAST( Unit_Transform.Rent_Per_Annum as Varchar )

以下是Fiddle。删除演员,你实际上收到一个错误。

祝你好运。