declare
@region nvarcharset @region=N'All'where @region=N'All' or (@region<>N'All' and SalesRegion.Name='East')这样抽出来的全是East的数据,为什么呢?另外一个问题,传入一个参数是@smq nvarchar类型,有'all''true''false'三个情况,表里有一个enable是bit类型
在where条件里写的是 where @smq=N'All' or (@smq<>N'All' and enable=cast(@smq as bit)))
执行时传入all,说不能把'a'转化成bit请教各位

解决方案 »

  1.   

    declare 
    @region nvarchar (100)
      

  2.   

    有'all''true''false'三个情况,表里有一个enable是bit类型 类型不一致.字符型的转BIT型出错,BIT只能为0或1.
      

  3.   


    类型不一致,bit只是0和1两种情况....
      

  4.   

    现在第一个问题解决了第二个问题,因为类型不一致才用cast进行转换,问题是当我传入一个all的话,or右边的部分就不应该被执行阿
      

  5.   

    不是已经告诉你了类型不对吗?all不能转换为0或1.
      

  6.   

    select @@region nvarchar (100) 
      

  7.   

    select @region nvarchar(100)
      

  8.   

    select @region nvarchar(50)
    bit只是0和1