'>'附近的语法不正确

时间:2019-08-22 17:26:46

标签: sql-server tsql

尝试在SQL Server中创建函数时收到上述错误。

我在this question中尝试了建议的解决方案,但是没有运气。我也尝试过删除“>”(所以它只是“ =”),错误切换到“ =”。我已经安装了Redgate Tools,并且最初使用代码片段来生成“创建函数”文本。但是,即使我启动一个新的空白查询文件并手动键入文本,也会遇到相同的错误。我试过更改变量的数据类型。我很沮丧我找不到语法上实际上有什么问题。

create function [dbo].[is_valid_date] (@date sql_variant)
returns bit
as
begin
declare @ret bit;

select @ret = (
        @date >= '1753-01-01'
        and @date <= '9999-12-31:23:59:59.9999'
        );

return @ret;
end
go

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

使用case。 SQL Server不支持将布尔表达式作为一等值:

select @ret = (case when @date >= '1753-01-01' and @date <= '9999-12-31:23:59:59.9999'
                    then 1 else 0
               end);

return @ret;

注意:您可以只返回表达式。无需将case分配给变量。

答案 1 :(得分:0)

您随时可以

 set @ret = 0
 IF @date >= '1753-01-01' AND @date <= '9999-12-31:23:59:59.9999'
 set @ret = 1