【发布时间】:2021-04-07 10:40:55
【问题描述】:
作为一个SQL新手,出于学习的目的,我成功创建了一个函数:
create function Movie_Search
(@FilmName as nvarchar(255))
returns nvarchar(255)
as
begin
declare @Film nvarchar(255)
select @Film = (select filmname
from [dbo].[tblFilm]
where FilmName like '%'+@FilmName+'%')
return @Film
end
这个想法是从这个函数中搜索电影的名字,但是select [Movie_Search]('star') 会抛出这个错误:
消息 102,第 15 级,状态 1,第 28 行
'star' 附近的语法不正确。
【问题讨论】:
-
您使用的是 MS SQL Server 吗?
-
用您正在使用的数据库标记您的问题。
-
请编辑您的问题并包含一个Minimal, Reproducible Example 来证明您的问题。这看起来像 SqlServer,应该是一个表值函数——如何处理多个匹配项?
-
请说明您是如何使用该功能的
-
我真的建议将其从多行标量函数转换为内联表值函数;它们远性能更高。请注意,如果您发现不止一部影片,上述内容也将失败,带有
WHERE子句的影片很容易在预期范围内。切换到 iTVF 的另一个原因,因为您不受标量值的限制。
标签: sql sql-server database