我的表中有日期时间字段。我想转换成字符串并声明为参数。
例如,当 datetime 字段不为空时,“OPEN”和 datetime 字段为空,然后“CLOSED”,当我输入参数时,我想键入“OPEN”或“CLOSED”,然后结果将在表中显示文本。
怎么做?。
我的表中有日期时间字段。我想转换成字符串并声明为参数。
例如,当 datetime 字段不为空时,“OPEN”和 datetime 字段为空,然后“CLOSED”,当我输入参数时,我想键入“OPEN”或“CLOSED”,然后结果将在表中显示文本。
怎么做?。
这就是我理解你的问题的方式:你想要一个带有接受两个固定值的字符串参数的查询,要么是'OPEN'
or 'CLOSED'
,并且你希望一个匹配表中某个datetime
列的非 NULL 值,另一个匹配 NULL 值同一列。并且您还希望将该列的值显示为'OPEN'
或'CLOSED'
相应地显示。
如果这是正确的,您可以尝试以下方法:
DECLARE @QueryParam varchar(20);
SET @QueryParam = 'OPEN';
SELECT *
FROM (
SELECT
OpenOrClosed = CASE WHEN DateTimeColumn IS NULL THEN 'CLOSED' ELSE 'OPEN' END,
other columns as necessary
FROM yourtable
) s
WHERE OpenOrClosed = @QueryParam;
您可能还需要考虑将子选择重写为视图:
CREATE VIEW YourTableView
AS
SELECT
OpenOrClosed = CASE WHEN DateTimeColumn IS NULL THEN 'CLOSED' ELSE 'OPEN' END,
other columns as necessary
FROM yourtable
然后您只需从该视图中选择:
DECLARE @QueryParam varchar(20);
SET @QueryParam = 'OPEN';
SELECT *
FROM YourTableView
WHERE OpenOrClosed = @QueryParam;
我不太了解您有关使用“参数”的问题,但希望这将为您提供所需的大部分内容。
SELECT CASE
WHEN [Date_Column] IS NULL THEN 'CLOSED'
ELSE 'OPEN'
END
FROM [Your_Table]