OR运算符的WHERE子句没有给出预期的结果

时间:2014-05-09 20:17:15

标签: sql sql-server select where-clause

我想为搜索功能编写存储过程。我有一个电影数据库,我应该可以通过Movie.NameMovie.ProducerMovie.Director搜索电影并显示Cast.Name

CREATE PROCEDURE RetrieveSearchResults
    @tokenParam VarChar
AS
    Select *
    from 
        (Movie 
    join 
        Cast on Movie.MovieID = Cast.MovieID) 
    join 
        Actor on Actor.ActorID = Cast.ActorID
    where 
        (Movie.Name like '%' + @tokenParam + '%')
        or (Movie.Producer like '%' + @tokenParam + '%')
        or (Movie.Director like '%' + @tokenParam + '%')
        or (Actor.Name like '%' + @tokenParam + '%')

执行时

RetrieveSearchResults 'Almighty'

我几乎所有的元组都没有像'全能'那样的文字

我错过了什么吗?

enter image description here

1 个答案:

答案 0 :(得分:5)

尝试声明varchar限制。 VARCHAR(100)或类似的东西。它可能会对长度进行假设并将其缩小为VARCHAR(1)或类似值。声明VARCHAR没有长度的问题是系统将为您分配,它可能不是您所期望的。