如何檢測字段是否爲空(非空),然後選擇另一個字段(如果是)?選擇列,如果空白從另一個選擇
我真正需要的是一個IsBlank函數,其功能與IsNull相同但帶有空格。
REPLACE不能與空白一起使用,COALESCE僅適用於NULLS。
如何檢測字段是否爲空(非空),然後選擇另一個字段(如果是)?選擇列,如果空白從另一個選擇
我真正需要的是一個IsBlank函數,其功能與IsNull相同但帶有空格。
REPLACE不能與空白一起使用,COALESCE僅適用於NULLS。
如何組合COALESCE和NULLIF。
SELECT COALESCE(NULLIF(SomeColumn,''), ReplacementColumn)
FROM SomeTable
編輯:你不能在mssql中使用IF()
。
使用IF語句在SQL SELECT部分:
SELECT IF(field1 != '', field1, field2) AS myfield FROM ...
不錯,但如果我需要工作超過2列將是一個痛苦。 –
我似乎無法得到它的工作:'選擇IF(地址2!='',地址2,地址3)AS地址從站點'給關鍵字'IF'附近的語法不正確。 –
好吧,我是一個完全愚蠢的人,對mysql感到困惑。 'IF()'似乎只適用於mysql,所以應該像上面那樣使用'CASE WHEN ELSE END'。我會在這裏留下這個警告給其他人:) – MDCore
您可以使用CASE
聲明此
select
Case WHEN Column1 = '' OR Column1 IS NULL OR LEN (TRIM (Column1)) = 0
THEN Column2
ELSE Column1 END as ColumnName
from TableName
這是我自己得到的,但是非常糟糕。 –
你總是可以編寫一個的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
我假設你可以使它支持* N *個表達式,因爲COALESCE通過像Raj More這樣的case語句來完成。 –
有趣的...可以很容易地擴展到3列工作? –
回答 - 是的,您可以:'COALESCE(NULLIF(Address2,''),NULLIF(Address3,''),Address4)' –
移動答案給你的,因爲它比Case語句更優雅。 –