0

我的表中有日期时间字段。我想转换成字符串并声明为参数。

例如,当 datetime 字段不为空时,“OPEN”和 datetime 字段为空,然后“CLOSED”,当我输入参数时,我想键入“OPEN”或“CLOSED”,然后结果将在表中显示文本。

怎么做?。

4

2 回答 2

0

这就是我理解你的问题的方式:你想要一个带有接受两个固定值的字符串参数的查询,要么是'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;
于 2012-06-26T05:25:41.837 回答
0

我不太了解您有关使用“参数”的问题,但希望这将为您提供所需的大部分内容。

SELECT CASE 
           WHEN [Date_Column] IS NULL THEN 'CLOSED'
           ELSE 'OPEN'
       END
FROM [Your_Table]
于 2012-06-26T04:39:33.530 回答