Фамилия Имя Переключатель с дефисами - PullRequest
0 голосов
/ 07 мая 2019

Я знаю, что об этом спрашивали несколько раз, и мне удалось найти частичный ответ, используя результаты, которые я нашел в StackOverflow.У меня есть столбец, который содержит комбинацию имен «LastName FirstName». Мне нужно, чтобы в строке отображалось «FirstName LastName. Я могу сделать это, используя следующий код SQL:

SELECT
SUBSTRING('First Last', CHARINDEX(' ', 'First Last') + 1, 8000) +' '+ 
SUBSTRING('First Last', 1, CHARINDEX(' ', 'First Last') - 1)  AS Name

Теперь, когда я пытаюсь использовать этокод, использующий мои данные с этим кодом:

SUBSTRING(Rtrim(Ltrim(name)), CHARINDEX(' ', Rtrim(Ltrim(name))) + 1, 
8000) +' '+ SUBSTRING(Rtrim(Ltrim(name)), 1, CHARINDEX(' ', 
Rtrim(Ltrim(name))) - 1)  AS Name
FROM
VW_MyView

Я получаю ожидаемые результаты, но также получаю сообщение об ошибке, в котором говорится

Недопустимый параметр длины, переданный в функцию LEFT или SUBSTRING.

Я отследил ошибку до имен с дефисом. Как я могу справиться с этими дефисами во время этого процесса

1 Ответ

0 голосов
/ 07 мая 2019

Хммм. , ,

Если у вас есть только одно или два имени, разделенных пробелом:

select (stuff(name, 1, charindex(' ', name + ' ') - 1, '') + ' ' +
        left(name, charindex(' ', name + ' ') - 1)
       )

Обратите внимание, что это добавляет пробел, поэтому charindex() возвращает правильную позицию.

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