尝试在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
有什么建议吗?
答案 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