Разделение сущности имени на Имя,Отчество и Фамилию

#sql #sql-server

Вопрос:

Я пытаюсь разделить поле имени на имя, отчество и фамилию. У меня возникли проблемы с разделением, так как введенные данные не соответствуют друг другу. Некоторые поля вводятся как

  1. AA CC
  2. AA CC BB
  3. AA CC. BB
  4. BB, AA CC

А-имя , Б-фамилия, В-отчество. Я работаю над SQL Server 2016.

Я пробовал использовать PARSENAME, но не совсем уверен, в каком направлении двигаться. Пожалуйста, дайте мне знать, что мне нужно предоставить.

Комментарии:

1. Обязательное чтение: Ложь, В Которую Верят Программисты В Отношении Имен

2. И, что касается вопроса, простой факт, и TL;DR таков: вы этого не делаете. Если вы не можете проверить у человека, как правильно разделить его, вы в лучшем случае догадываетесь, и вы получите некоторые (очень) неправильные результаты.

3. Лучший подход здесь, вероятно, заключается в том, чтобы не пытаться делать это в SQL Server. Ваша жизнь была бы намного проще, если бы вы просто разделили компоненты имен в исходном источнике данных.

Ответ №1:

Сначала удалите любой дополнительный символ (.,) путем замены, затем используйте пробел в качестве разделителя, как показано ниже:

 SELECT REPLACE('AA CC. BB', '.', ''); 

SELECT value FROM STRING_SPLIT('AA CC BB', ' ');
 

Очевидно, используя соответствующие предложения ОБНОВЛЕНИЯ.

Комментарии:

1. Я сомневаюсь, что это сработает. Например, я бы предположил, что значение 'BB, AA CC' находится в формате {Last Name}, {First Name] {Middle Name(s)} .