我的桌子上有日期时间字段。我想转换成字符串并声明为参数。
例如,当datetime字段不为null时,'OPEN'和datetime字段为null然后'CLOSED',当我输入参数时,我想要输入'OPEN'或'CLOSED'然后结果将显示表
怎么做?。
答案 0 :(得分:0)
我不太关注使用'参数'的问题,但希望这能为您提供所需的大部分内容。
SELECT CASE
WHEN [Date_Column] IS NULL THEN 'CLOSED'
ELSE 'OPEN'
END
FROM [Your_Table]
答案 1 :(得分:0)
这就是我理解你的问题的方法:你想要一个字符串参数的查询接受两个固定值,'OPEN'
或'CLOSED'
,你想要一个匹配特定的非NULL值表中的datetime
列,另一列匹配同一列的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;