在sqlquery字符串上放一个“(”和“)”

时间:2014-11-29 04:08:11

标签: sql sql-server

string sqlquery=
Select userPropID , PropType, PropLoc, PropTranType,PropFloorNo From dbo.tbl_allProperties 
WHERE PostPropFor = 'Sale' AND  PropCity = '4320-1001041'  
AND PropType ='Business Centre' OR PropType ='Space in Shopping Mall' OR PropType ='Commercial Showroom' AND PropImage !='~/user_prop_images/noImage.jpg'

上面的sqlquery没有修复字段,当用户在字段/控件中输入值时,它可能会扩展更多字段。 我的要求是:

  1. 如果有一个' PropType',则不执行任何操作。
  2. 如果有多个PropType',请输入'('在第一个' PropType'之后 a')'在最后一个' PropType'。
  3. 之后

    以上查询应该是这样的:

    Select userPropID , PropType, PropLoc, PropTranType,PropFloorNo From dbo.tbl_allProperties 
    WHERE PostPropFor = 'Sale' AND  PropCity = '4320-1001041'  
    AND (PropType ='Business Centre' OR PropType ='Space in Shopping Mall' OR PropType ='Commercial Showroom') AND PropImage !='~/user_prop_images/noImage.jpg'
    

1 个答案:

答案 0 :(得分:2)

您的说明会修改单独行上的值。如果是,您可以使用row_number()case声明:

Select userPropID,
       (case when row_number() over (partition by userPropId order by PropTYpe) = 1 then '(' + PropType
             when row_number() over (partition by userPropId order by PropTYpe desc) = 1 then PropType + ')'
             else PropType
        end) as PropType
       PropLoc, PropTranType, PropFloorNo
From dbo.tbl_allProperties 
where PostPropFor = 'Sale' AND  PropCity = '4320-1001041'  AND 
      PropType in ('Business Centre', 'Space in Shopping Mall', 'Commercial Showroom') AND
      PropImage !='~/user_prop_images/noImage.jpg';