В машинописи, как сортировать в точности как MSSQL 'order by' для специальных символов, таких как *, + - и т. Д. - PullRequest
0 голосов
/ 11 июня 2018

У меня есть интерфейс на основе Angular5, который должен показать список людей.Подобный список показан в фоновом приложении.Оба списка должны быть отсортированы одинаково.Внутренний список выбирается с помощью запроса в MSSQL DB, который использует предложение 'order by', например, так:

select * from PERSON where GROUP=1 order by PERSON.LAST_NAME ASC, PERSON.INITIALS ASC, PERSON.PREFIX ASC, PERSON.FIRSTNAME ASC

На внешнем интерфейсе модель моего персонажа выглядит следующим образом:

export interface Person {
  id?: number;
  fullName?: string;
}

Полное имя здесь в соответствии с этим форматом: [Фамилия, Инициал Префикс Фамилия], например: Адамс, мистер Джон.

Я использую этот метод для сортировки:

public sortByName(aPersonArr: Person[]) {
    aPersonArr.sort((p1, p2) => {
      let name1 = p1.fullName;
      let name2 = p2.fullName;

      // If both names are blank, consider them equal, If one name is blank, place it at the last
      if (!name1 && !name2) {
        return 0;
      } else if (name1 && !name2) {
        return -1;
      } else if (name2 && !name1) {
        return 1;
      }

      name1 = name1.toLowerCase();
      name2 = name2.toLowerCase();

      if (name1 < name2) {
        return -1;
      }

      if (name1 > name2) {
        return 1;
      }

      return 0;
    });
  }
}

Но проблема возникает, когда полное имя человека начинается со специального символа, потому что SQL-запрос выбирает имена в следующем порядке: (Здесь отображаются только последние имена)

*Account
,Adams
.Alkin
+Account
-Adams

В то время как мой машинописный код сортирует их следующим образом: (Показанытолько последние имена здесь)

*Account
+Account
,Adams
-Adams
.Alkin

Причина, по которой мне нужна эта логика на внешнем интерфейсе, заключается в том, что мой личный список много раз динамически готовился и должен быть отсортирован сразу.Есть ли способ узнать, какая именно логика используется SQL-запросом для сравнения строк, чтобы я мог использовать то же самое в моем методе сортировки.

...