Разобрать тайское имя в первый последний

Нет, похоже, что вы делаете это неправильно. Соединения MongoDB являются «клиентской стороной». Очень похоже на то, что вы сказали:

На данный момент я получаю комментарии, соответствующие моим критериям, затем выясняя все uid в этом наборе результатов, получая пользовательские объекты и объединяя их с комментариями. Похоже, я делаю это неправильно.

1) Select from the collection you're interested in.
2) From that collection pull out ID's you need
3) Select from other collections
4) Decorate your original results.

Это не «реальное» соединение, но на самом деле оно намного полезнее, чем соединение SQL, потому что вам не нужно иметь дело с дубликатом строки для «многих» сторонних объединений, вместо этого вы украшаете первоначально выбранный набор.

На этой странице много глупостей и FUD. Оказывается, 5 лет спустя MongoDB все еще есть.

1
задан Mark 17 January 2019 в 15:26
поделиться

2 ответа

Я не могу читать по-тайски (я не такой умный), но, возможно, это может помочь.

Здесь мы используем CROSS APPLY, чтобы «исправить» строку, и тогда это небольшой вопрос из PasrName() и Concat()

Я должен добавить, что разбор имен - это скользкий уклон. Нужно рассмотреть

  • Multi Word Фамилии, т. Е. Де ла Круз
  • Суффикс т.е. Ричард Р. Каппеллетти MD

Пример

Declare @YourTable table (FullName nvarchar(100))
Insert Into @YourTable values
 ('John Smith')
,('John J. Smith')
,(N'กล้วยไม้ สวามิวัศดุ์')

Select A.*
      ,LastName  = replace(parsename(S,1),'|','.')
      ,FirstName = replace(concat(parsename(S,4),' '+parsename(S,3),' '+parsename(S,2)),'|','.')
 From  @YourTable A
 Cross Apply ( values (replace(replace(FullName,'.','|'),' ','.'))) B(S)

Возвращает

FullName          LastName    FirstName
John Smith        Smith       John
John J. Smith     Smith       John J.
กล้วยไม้ สวามิวัศดุ์    สวามิวัศดุ์     กล้วยไม้

РЕДАКТИРОВАТЬ 2008 Версия

Select A.*
      ,LastName  = replace(parsename(S,1),'|','.')
      ,FirstName = replace( IsNull(parsename(S,4),'') + IsNull(' '+parsename(S,3),'') + IsNull(' '+parsename(S,2),''),'|','.')
 From  @YourTable A
 Cross Apply ( values (replace(replace(FullName,'.','|'),' ','.'))) B(S)
0
ответ дан John Cappelletti 17 January 2019 в 15:26
поделиться

Я тайка, и я знаю одно: тайцы не используют отчество.

0
ответ дан Yingy 17 January 2019 в 15:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: