SQL 服务器标量函数中“<”附近的语法不正确
Incorrect syntax near '<' in SQL Server Scalar Functions
要求如下:
查找名字长度小于5且名字和姓氏前3个字符相同的所有教师
我试过这个查询(标量函数):
CREATE OR ALTER FUNCTION dbo.fn_TeacherFirstName (@TeacherID int)
RETURNS NVARCHAR(20)
AS
BEGIN
DECLARE @Result NVARCHAR(20)
SELECT @Result = LEN(FirstName) < 5 AND LEFT(FirstName,3) = LEFT(LastName,3)
FROM dbo.Teacher
WHERE @TeacherID = ID
RETURN @Result
END
调用函数:
--CALL FUNCTION
select *, dbo.fn_TeacherFirstName (ID) AS Result
from dbo.Teacher t
但是,当我执行第一个查询时,它显示错误:
Incorrect syntax near '<'.
谁能帮我解决这个问题?
只使用普通查询,而不是函数。 SQL 服务器中也没有 boolean
类型,请使用 bit
代替。
SELECT *,
Result = CAST(CASE WHEN LEN(t.FirstName) < 5 AND LEFT(t.FirstName, 3) = LEFT(t.LastName, 3) THEN 1 END AS bit)
FROM dbo.Teacher t
要求如下:
查找名字长度小于5且名字和姓氏前3个字符相同的所有教师
我试过这个查询(标量函数):
CREATE OR ALTER FUNCTION dbo.fn_TeacherFirstName (@TeacherID int)
RETURNS NVARCHAR(20)
AS
BEGIN
DECLARE @Result NVARCHAR(20)
SELECT @Result = LEN(FirstName) < 5 AND LEFT(FirstName,3) = LEFT(LastName,3)
FROM dbo.Teacher
WHERE @TeacherID = ID
RETURN @Result
END
调用函数:
--CALL FUNCTION
select *, dbo.fn_TeacherFirstName (ID) AS Result
from dbo.Teacher t
但是,当我执行第一个查询时,它显示错误:
Incorrect syntax near '<'.
谁能帮我解决这个问题?
只使用普通查询,而不是函数。 SQL 服务器中也没有 boolean
类型,请使用 bit
代替。
SELECT *,
Result = CAST(CASE WHEN LEN(t.FirstName) < 5 AND LEFT(t.FirstName, 3) = LEFT(t.LastName, 3) THEN 1 END AS bit)
FROM dbo.Teacher t