Как избежать пробела при объединении, если значения базы данных равны нулю? - PullRequest
0 голосов
/ 25 сентября 2019

Я объединяю три значения базы данных Имя, отчество, фамилия. Вот запрос -

Select ISNULL(t.FirstName,'')+' '+ISNULL(t.MiddleName,'')+' '+ ISNULL(t.LastName,'') as [UserName],Email from table1 t

Я получаю нулевые значения для некоторых отчеств.Вот почему я получаю дополнительные пробелы после конкатенации.

Имя Фамилия - получение двух пробелов вместо одного

Я хочу, чтобы второе имя было пустым, тогда только один пробелбудет присутствовать в результате. Если это не нуль, то есть один пробел между именем, отчеством и фамилией.Я попробовал некоторые методы, чтобы избежать этого, но ничего не помогло.

Ответы [ 3 ]

1 голос
/ 25 сентября 2019

Поместите пробел внутри ISNULL Функция:

Select ISNULL(t.FirstName + ' ', '') 
    + ISNULL(t.MiddleName + ' ', '')
    + ISNULL(t.LastName,'') as [UserName]
1 голос
/ 25 сентября 2019

Вы можете использовать функцию replace() для замены двойных пробелов на один пробел

Select replace(concat(coalesce(t.FirstName,''), ' '
    , coalesce(t.MiddleName,' ')
    , coalesce(t.LastName,''), '  ', ' ')) as [UserName]
    , Email 
from table1 t
0 голосов
/ 25 сентября 2019

Вы можете использовать case when предложение

SELECT ISNULL(t.FirstName,'') + 
  CASE WHEN t.MiddleName IS NOT NULL THEN
    ' ' + t.MiddleName + ' '
  ELSE 
    ' ' 
  END +
  ISNULL(t.LastName,'') as [UserName],
  Email
FROM table1 t

Пример здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...