#sql #sql-server
Вопрос:
Я пытаюсь разделить поле имени на имя, отчество и фамилию. У меня возникли проблемы с разделением, так как введенные данные не соответствуют друг другу. Некоторые поля вводятся как
- AA CC
- AA CC BB
- AA CC. BB
- 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)}
.