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

Abd*_*sae 1 sql sql-server select where-clause

我想为搜索功能编写存储过程.我有电影的一个数据库,我应该能够通过搜索一部电影Movie.Name,Movie.Producer,Movie.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 + '%')
Run Code Online (Sandbox Code Playgroud)

执行时

RetrieveSearchResults 'Almighty'
Run Code Online (Sandbox Code Playgroud)

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

我错过了什么吗?

在此输入图像描述

小智 5

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