// 'g.' preffix because of ERROR 1052 (23000): Column 'column_name' in where
  // clause is ambiguous
  // caused by the same name of columns in m_office and m_group tables
  private String getGroupExtraCriteria(final SearchParameters searchCriteria) {

    String extraCriteria = " and g.level_Id = " + GroupTypes.GROUP.getId();

    String sqlSearch = searchCriteria.getSqlSearch();
    if (sqlSearch != null) {
      sqlSearch = sqlSearch.replaceAll(" display_name ", " g.display_name ");
      sqlSearch = sqlSearch.replaceAll("display_name ", "g.display_name ");
      extraCriteria += " and (" + sqlSearch + ")";
    }

    final Long officeId = searchCriteria.getOfficeId();
    if (officeId != null) {
      extraCriteria += " and g.office_id = " + officeId;
    }

    final String externalId = searchCriteria.getExternalId();
    if (externalId != null) {
      extraCriteria += " and g.external_id = " + ApiParameterHelper.sqlEncodeString(externalId);
    }

    final String name = searchCriteria.getName();
    if (name != null) {
      extraCriteria +=
          " and g.display_name like " + ApiParameterHelper.sqlEncodeString("%" + name + "%");
    }

    final String hierarchy = searchCriteria.getHierarchy();
    if (hierarchy != null) {
      extraCriteria +=
          " and o.hierarchy like " + ApiParameterHelper.sqlEncodeString(hierarchy + "%");
    }

    if (StringUtils.isNotBlank(extraCriteria)) {
      extraCriteria = extraCriteria.substring(4);
    }

    return extraCriteria;
  }