【发布时间】:2010-12-17 09:25:33
【问题描述】:
如何检测一个字段是否为空(非空),如果是则选择另一个字段?
我真正需要的是一个与 IsNull 相同但带有空格的 IsBlank 函数。
REPLACE 不适用于空格,COALESCE 仅适用于 NULLS。
【问题讨论】:
标签: sql sql-server-2000
如何检测一个字段是否为空(非空),如果是则选择另一个字段?
我真正需要的是一个与 IsNull 相同但带有空格的 IsBlank 函数。
REPLACE 不适用于空格,COALESCE 仅适用于 NULLS。
【问题讨论】:
标签: sql sql-server-2000
如何结合 COALESCE 和 NULLIF。
SELECT COALESCE(NULLIF(SomeColumn,''), ReplacementColumn)
FROM SomeTable
【讨论】:
COALESCE(NULLIF(Address2,''), NULLIF(Address3,''), Address4)
你总是可以写一个 isBlank() 函数,比如
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION isBlank
(
@CheckExpression varchar, @ReplacementExpression varchar
)
RETURNS varchar
AS
BEGIN
IF @CheckExpression IS NOT NULL
BEGIN
IF @CheckExpression='' or LEN(@CheckExpression) = 0
RETURN @ReplacementExpression
ELSE
RETURN @CheckExpression
END
RETURN @ReplacementExpression
END
GO
【讨论】:
编辑:您不能在 mssql 中使用 IF()。
在 SQL 的 SELECT 部分使用 IF 语句:
SELECT IF(field1 != '', field1, field2) AS myfield FROM ...
【讨论】:
SELECT IF(Address2!='', Address2, Address3) AS Address FROM Sites 在关键字“IF”附近给出了不正确的语法。
IF() 似乎只适用于 mysql,所以不如使用上面的 CASE WHEN THEN ELSE END。我会把它留在这里作为对其他人的警告:)
您可以为此使用CASE 语句
select
Case WHEN Column1 = '' OR Column1 IS NULL OR LEN (TRIM (Column1)) = 0
THEN Column2
ELSE Column1 END as ColumnName
from TableName
【讨论】: