Как преобразовать две строки nvarchar в одну, когда одна из строк равна нулю - PullRequest
2 голосов
/ 06 мая 2011

извините, если это дубликат одного из существующих вопросов (это так просто, но я не могу понять, я новичок).

Мне нужно перенести некоторые данные из одной таблицы в другую (разные структуры).

Таблица A содержит столбцы Имя и Фамилия.Таблица B имеет столбец Имя

Я хочу сделать

SELECT Firstname + ' ' + LastName As Name FROM TableA 

Но проблема в том, что в таблице B некоторые строки имеют нулевое значение для имени или фамилии, но не оба (ленивый пользователь).

Когда я импортирую их в таблицу B, запрос завершается неудачно, поскольку в моем новом дизайне столбец «Имя» не может иметь значение NULL, а когда я проверяю приведенное выше утверждение, если firstname или lastname равно NULL, объединенное значение равно NULL.

Исходя из прочитанного мною, это ожидаемое поведение, но что я могу сделать, чтобы обойти это?

Я хочу сохранить имя или фамилию, если другое значение равно нулю.

Ответы [ 4 ]

4 голосов
/ 06 мая 2011
SELECT RTRIM(LTRIM(ISNULL(Firstname ,'') + ' ' + ISNULL(LastName,''))) AS Name 
FROM TableA 
1 голос
/ 06 мая 2011

Это можно сделать с помощью единого выражения (верните сначала ненулевое значение) и не нужно возиться с пробелами.

select 
  coalesce(firstname + ' ' + lastname, firstname, lastname)
from TableA
0 голосов
/ 06 мая 2011
SELECT isnull (Firstname, '') + ' ' isnull (LastName, '') as Name 
FROM TableA
0 голосов
/ 06 мая 2011

используйте coalesce или isnull

 select COALESCE(FirstNAme, '') + ' ' + COALESCE(LastName, '') as name from TableA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...