在Sql Server中,执行的Sql语句如果有字符串变量需要用单引号括起来。所有用两个单引号表示一个引号。即:''''+@condition+''''其实是这样的
“'”+@condition+“'”'''%'+@condition+'%'''其实是这样的
“'%”+@condition+“%'”

解决方案 »

  1.   

    to zebi
    如果不是在执行期,上面的sql语句就该这样写:
    select * from @tablename where @field='+@condition'
    对吗?如果对的话,那这样写又是什么意思呢?
      

  2.   

    用引号的情况是在动态SQL语句的情况下,对于字符串变量,要在生成后的SQL语句中用''包含起来。
      

  3.   

    @condition是变量啊
    旧相当于在DELPHI中的VAR
     I
    :INTEGER一样啊
      

  4.   

    那@field也是变量啊,它为什么就不用引号呢?
    另:有QQ吗?想拜你为师,我的毕业设计有好多都要用到存储过程,想向你请教
      

  5.   

    set @sql='select * from '+@tablename+'where '+@filed+'='+''''+@condition+''''set @sql='select * from '+@tablename +' where '+@filed+' like '+'''%'+@condition+'%'''在SQL2000中你的@sql变量是字符''''表示在SQL中给@condition加上单引号就变成'@condition',这样在SQL中才有效
    是字符才用,不是直接加单引号
      

  6.   

    你的意思是说''''代表单引号,在sql语句中只要用的字符,就要在两边用''''括起来,但是我认为只要''''@condition+''''就行了,怎么又多一个加号
    ''''+@condition+''''呢?
    另:第二个'''%'+@condition+'%'''该作合解释?
    小弟笨了点,希望老兄多多指教
      

  7.   

    同意  : zebi(哲别) 
    ''''@condition+'''' 这样就把 @condition 当作字符了,而不是变量。
      

  8.   

    1、@condition,@sql 是一个字符串变量
    两个字符串连接要用+,所以有''''+@condition+''''2、因为字符串要用'引上,而在sql2000中'用''转意,所以有''''3、%为通配符,表示任意值。
    如果@condition为111
    '''%'+@condition+'%'''表示*111*,如a111a,b111b,qwe111rwrw等等