У некоторых полей имени есть средняя инициализация, а у некоторых нет, как мне удалить инициал в MSSQL - PullRequest
0 голосов
/ 25 апреля 2019

Мне нужно объединить столбцы LastName и FirstName в новый столбец с именем EmployeeName. Проблема состоит в том, что некоторые поля имени включают среднюю букву, а некоторые - нет. Мы не хотим инициала в столбце EmployeeName. Как мне удалить его из этих экземпляров?

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

ВЫБРАТЬ ВЛЕВО (EmployeeName, LEN (EmployeeName) - 2) ИЗ myTable но при этом удаляются последние символы даже для тех, у кого нет средней буквы. У меня это равно -2 для учета пробела между FirstName и Middle Initial

Если в поле EmployeeName указано значение Smith, John J, оно удаляет пробел и J правильно

Когда в поле EmployeeName указано Смит, Джон удаляет 'hn'. Я этого не хочу.

Большое спасибо

1 Ответ

0 голосов
/ 25 апреля 2019

Я понял это. Я подсчитываю пробелы, затем использую оператор case для объединения полей

выберите Фамилия, Имя, ( дело когда len (имя) - len (заменить (имя, '', ''))>> 0 затем concat (LEFT (имя, LEN (имя) - 2), ',', LastName) ELSE concat (Имя, Фамилия, Имя) КОНЕЦ ) как имена из myTable

...