2016-01-22 1 views
2

Я создаю представление для некоторой внешней системы. Эта внешняя система не работает с нулевыми значениями, поэтому я хочу изменить их на несколько более удобных для пользователя, например, «».Просмотр SQL Server на основе JOIN двух таблиц - как заменить значения 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 
    -- .. 

?

Update: Он не понимает, что r является:

enter image description here

Update # 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 

Также обратите внимание, о разнице между COALESCE и ISNULL:

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

Он не видит эту переменную .. Я обновил сообщение –

+0

Мой плохой, исправленный запрос –

Смежные вопросы