Sql 如果没有返回行,请选择默认值
我只选择一列,我的查询肯定只返回0或1行。我想选择一些默认值,如Sql 如果没有返回行,请选择默认值,sql,sql-server,Sql,Sql Server,我只选择一列,我的查询肯定只返回0或1行。我想选择一些默认值,如some default,如果没有返回行,则返回值 我试过类似的东西 SELECT Column1 FROM Table1 WHERE PKColumn = SomeValue 但它不起作用 有没有办法在一条SQL语句中实现这一点?我认为您可以使用如下查询: SELECT CASE WHEN COUNT(1) = 1 THEN Column1 ELSE 'Some Default' END AS Column1 FROM T
some default
,如果没有返回行,则返回值
我试过类似的东西
SELECT Column1
FROM Table1
WHERE PKColumn = SomeValue
但它不起作用
有没有办法在一条SQL语句中实现这一点?我认为您可以使用如下查询:
SELECT CASE WHEN COUNT(1) = 1 THEN Column1 ELSE 'Some Default' END AS Column1
FROM Table1
WHERE PKColumn = SomeValue
GROUP BY Column1
SELECT
[Column1] = ISNULL([t2].[Column1], 'Some Default')
FROM
[Table1] AS [t1]
OUTER APPLY
(
SELECT
[Column1]
FROM
[Table1]
WHERE
[PKColumn] = [t1].[PKColumn]
) AS [t2]
WHERE
[t1].[PKColumn] = 'SomeValue';
SELECT COALESCE((SELECT TOP 1 Column1 FROM Table1 WHERE PK = SomeValue), 'DefaultValue')
或者将
存在与联合使用
:
SELECT TOP(1)
CASE WHEN EXISTS(SELECT 1 FROM t WHERE PKColumn = SomeValue) THEN Column1
ELSE 'Some Default' END AS Column1
FROM t;
我认为您可以使用如下查询:
SELECT
[Column1] = ISNULL([t2].[Column1], 'Some Default')
FROM
[Table1] AS [t1]
OUTER APPLY
(
SELECT
[Column1]
FROM
[Table1]
WHERE
[PKColumn] = [t1].[PKColumn]
) AS [t2]
WHERE
[t1].[PKColumn] = 'SomeValue';
SELECT COALESCE((SELECT TOP 1 Column1 FROM Table1 WHERE PK = SomeValue), 'DefaultValue')
或者将存在与联合使用
:
SELECT TOP(1)
CASE WHEN EXISTS(SELECT 1 FROM t WHERE PKColumn = SomeValue) THEN Column1
ELSE 'Some Default' END AS Column1
FROM t;
您可以使用合并
按顺序计算参数并返回参数的当前值
最初计算结果不为NULL的第一个表达式
或者像这样:
SELECT
[Column1] = ISNULL([t2].[Column1], 'Some Default')
FROM
[Table1] AS [t1]
OUTER APPLY
(
SELECT
[Column1]
FROM
[Table1]
WHERE
[PKColumn] = [t1].[PKColumn]
) AS [t2]
WHERE
[t1].[PKColumn] = 'SomeValue';
SELECT COALESCE((SELECT TOP 1 Column1 FROM Table1 WHERE PK = SomeValue), 'DefaultValue')
您可以使用合并
按顺序计算参数并返回参数的当前值
最初计算结果不为NULL的第一个表达式
或者像这样:
SELECT
[Column1] = ISNULL([t2].[Column1], 'Some Default')
FROM
[Table1] AS [t1]
OUTER APPLY
(
SELECT
[Column1]
FROM
[Table1]
WHERE
[PKColumn] = [t1].[PKColumn]
) AS [t2]
WHERE
[t1].[PKColumn] = 'SomeValue';
SELECT COALESCE((SELECT TOP 1 Column1 FROM Table1 WHERE PK = SomeValue), 'DefaultValue')
也许可以尝试使用LEN而不是COUNT来检查Column1是否有值
DECLARE @ReturnValue INT = 3 -- Default value
SELECT TOP 1 @ReturnValue = Column1 FROM Table1 WHERE PK = SomeValue
SELECT @ReturnValue
也许可以尝试使用LEN而不是COUNT来检查Column1是否有值
DECLARE @ReturnValue INT = 3 -- Default value
SELECT TOP 1 @ReturnValue = Column1 FROM Table1 WHERE PK = SomeValue
SELECT @ReturnValue
我认为您需要使用EXISTS
代替;)。我认为您需要使用EXISTS
代替;)。