2016-01-22 77 views
2

我正在爲一些外部系統創建視圖。這個外部系統不能處理空值,所以我想通過例子「」來改變它們,使其更加用戶友好。基於JOIN兩個表的SQL Server視圖 - 如何用空格替換NULL值?

我用這個查詢創建我的觀點:

CREATE VIEW SomeView 
AS 
    SELECT 
     r.CountryRegionCode, r.Name, e.ExampleData 
    FROM 
     AdventureWorks2008.Person.CountryRegion r 
    JOIN 
     AdventureWorks2008.dbo.SomeTable e ON r.CountryRegionCode = e.CountryRegionCode 

此查詢的結果是:

enter image description here

按我的理解,我可以使用ISNULL運營商與空間來代替NULL,但如何在我的聲明中使用它?如何正確操作:

SELECT 
    ISNULL (r.CountryRegionCode, 0) AS r.CountryRegionCode 
    -- .. 

更新:它不理解r是什麼:

enter image description here

更新#2:感謝你們非常感謝!最終的結果是:

SELECT 
    CountryRegionCode = ISNULL(r.CountryRegionCode, ''), 
    Name = ISNULL(r.Name,''), 
    ExampleData = ISNULL(e.ExampleData,'') 
FROM 
    AdventureWorks2008.Person.CountryRegion r 
JOIN 
    AdventureWorks2008.dbo.SomeTable e ON r.CountryRegionCode = e.CountryRegionCode 
+0

這是對你合適: SELECT ISNULL(r.CountryRegionCode, '')AS CountryRegionCode –

回答

2

r是一個表的別名。如果你想獲得列名r.CountryRegionCode需要引用它們:[r.CountryRegionCode]

CREATE VIEW SomeView 
AS 
    SELECT CountryRegionCode = ISNULL(r.CountryRegionCode, ' '), -- COALESCE(r.CountryRegionCode, ' ') 
      r.name, 
      e.ExampleData 
    FROM AdventureWorks2008.Person.CountryRegion r 
    JOIN AdventureWorks2008.dbo.SomeTable e ON r.CountryRegionCode = e.CountryRegionCode 

同時請注意,關於差異COALESCEISNULL之間:

DECLARE @a CHAR(1) 
SELECT ISNULL(@a, 'NULL') /*N*/, COALESCE(@a, 'NULL') /*NULL*/ 
1
SELECT ISNULL(r.CountryRegionCode,' ') AS CountryRegionCode 
+0

它沒有看到這個變量..我更新後 –

+0

我的不好,查詢糾正 –