Проблема добавления строки Sql - PullRequest
2 голосов
/ 12 мая 2010
SELECT a.one + ' test ' +b.two from table1 a right join table1 on a.id =b.id 

Проблема в том, что когда один равен нулю, тогда вся строка равна нулю, есть ли какая-то хитрость, чтобы обойти эту проблему msSQL 2005

Ответы [ 3 ]

3 голосов
/ 12 мая 2010

Вы ищете функцию ISNULL:

SELECT ISNULL(a.one,'') + ' test ' + ISNULL(b.two , '')
from table1 a 
right join table1 b 
  on a.id =b.id 

Если первый аргумент функции ISNULL равен нулю, то предоставляется второй аргумент. Таким образом, ни одно из объединенных полей не вернет ноль, и вы получите строку, а не нуль.

2 голосов
/ 12 мая 2010

Это зависит от того, какой результат вы хотите получить, когда один или оба входа равны нулю. Если вы просто хотите, чтобы каждая часть свернулась в пустую строку, используйте ISNULL:

ISNULL(a.one, '') + ' test ' + ISNULL(b.two, '')

В противном случае, вам придется проявить смекалку с выражением CASE.

1 голос
/ 12 мая 2010

Есть несколько вариантов в зависимости от того, какой вывод вы хотите

-- leading/trailing spaces on test
SELECT ISNULL(a.one,'') + ' test ' + ISNULL(b.two , '')

-- no spacing around test
SELECT ISNULL(a.one,' ') + 'test' + ISNULL(' ' + b.two, '')

-- do you want the word test at all if one is blank?
SELECT ISNULL(a.one + ' test','') + ISNULL(' ' + b.two, '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...