我想在用户将选择的表的任何列上执行搜索。为此,我有两个字符串变量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值的列,则表示未找到记录。
任何想法为什么会发生这种情况。
答案 0 :(得分:1)
我认为你需要像这样将你的十进制字段传递给varchar:
When 'Rent' then CAST( Unit_Transform.Rent_Per_Annum as Varchar )
以下是Fiddle。删除演员,你实际上收到一个错误。
祝你好运。