我创建了一个默认值:
create default [dbo].[MAX_DATE] as '31/12/9999 23:59:59'
现在我想从sql查询中返回它。我试过这个:
SELECT
CASE date_field WHEN dbo.MAX_DATE THEN '' ELSE date_field END
FROM
myTable
但是,我收到以下错误:
Server: Msg 107, Level 16, State 2, Line 2
The column prefix 'dbo' does not match with a table name or alias name used in the query.
答案 0 :(得分:2)
通过将它们绑定到列来使用默认值。当创建行并且未指定列值时,服务器将应用默认值。 (见:http://msdn.microsoft.com/en-us/library/ms173565.aspx)
以下是3个选项:
选项(1) 看起来您正在使用"命名常量"用于做比较。在这种情况下,您可能希望使用函数,例如:
CREATE Function [dbo].[MAX_DATE] ()
Returns Datetime
as
BEGIN
Return '99991231 23:59:59'
END;
GO
select dbo.MAX_DATE()
选项(2) 您可能考虑的另一个选项是拥有一个名为常量的表。它可能包含以下列:ID(自动编号),ValueName,numValue,strValue,dtValue,binValue。您可以根据您在其中存储的值的类型填充ValueName和相应的列。
选项(3) 要在当前脚本中使用常量,可以声明一个值并设置它的值,并在脚本的其余部分中使用它。这些变量超出了批处理范围,因此要么在脚本运行完毕,要么SQL遇到GO语句。 E.g。
DECLARE @MAX_VALUE as datetime
set @MAX_VALUE = '99991231 23:59:59'
select @MAX_VALUE