2013-09-01 3 views
2

Привет У меня есть следующая команда select в SQL Server. Я пытаюсь изменить его, так что если b.bId равно null, я хочу присвоить ему значение 0. Поэтому он отображает 0 в поле.Замена нулевого нуля

select top 1 
    a.sId 
    ,b.bId 
    from tlocal a 
    left outer join ts b on (b.id=a.mainId) 
    where 
    [email protected]; 

Пожалуйста, дайте мне знать, как изменить. Благодаря

ответ

6

Вы можете использовать функцию ISNULL следующим образом:

ISNULL(b.bId, 0) bId 
2

В качестве другой альтернативы вы могли бы выполнить этот SQL в вашем ts таблице

update ts 
set id = '' 
where id is null 
+3

в примере, при условии, что результат поля является нулевым из-за операции соединения, а это означает, что результат сопоставления в таблице не найден. COALESCE и ISNULL были бы оптимальными решениями в этом случае. – ermagana

4

Или вы можете изменить значение COALESCE Номер функции

COALESCE(b.bId, 0) AS bId 

Performance: ISNULL vs. COALESCE

+0

Ссылка, которую вы указали, не объясняет, какая функция встраивания выполняется быстрее. – gotqn

+0

@gotqn - Я думаю, вы пропустили эту часть статьи: «Я несколько раз тестировал эти тесты на нескольких разных серверах, а ISNULL, как представляется, довольно последовательно выполнял COALESCE в среднем на 10 или 12 процентов. разница между 6 секундами и 5,3 секундами (приблизительное среднее время автономной работы за один тест на моих серверах) в течение миллиона выходов (sp). Вряд ли стоит жертвовать функциональностью и стандартами, по крайней мере, в сценариях, для которых я использую эти функции. " –

+0

Собственно, статья является старой. Если вы снова проведете свое исследование, вы увидите, что в новой версии SQL-сервера нет никакой разницы. – gotqn

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