3

我想对用户将选择的表的任何列执行搜索。为此,我有两个字符串变量 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 值的列,则显示未找到记录。

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

4

1 回答 1

1

我认为您需要像这样将您的十进制字段转换为 varchar:

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

这是Fiddle可以看到的。删除演员表,您实际上会收到错误消息。

祝你好运。

于 2013-02-02T06:46:16.810 回答