pub trait PgSortExpressionMethods: Sized {
fn nulls_first(self) -> NullsFirst<Self> { ... }
fn nulls_last(self) -> NullsLast<Self> { ... }
}
Expand description
PostgreSQL expression methods related to sorting.
This trait is only implemented for Asc
and Desc
. Although .asc
is
implicit if no order is given, you will need to call .asc()
explicitly in
order to call these methods.
Provided methods
fn nulls_first(self) -> NullsFirst<Self>
fn nulls_first(self) -> NullsFirst<Self>
Specify that nulls should come before other values in this ordering.
Normally, nulls come last when sorting in ascending order and first when sorting in descending order.
Example
diesel::insert_into(nullable_numbers)
.values(&vec![
nullable_number.eq(None),
nullable_number.eq(Some(1)),
nullable_number.eq(Some(2)),
])
.execute(&connection)?;
let asc_default_nulls = nullable_numbers.select(nullable_number)
.order(nullable_number.asc())
.load(&connection)?;
assert_eq!(vec![Some(1), Some(2), None], asc_default_nulls);
let asc_nulls_first = nullable_numbers.select(nullable_number)
.order(nullable_number.asc().nulls_first())
.load(&connection)?;
assert_eq!(vec![None, Some(1), Some(2)], asc_nulls_first);
fn nulls_last(self) -> NullsLast<Self>
fn nulls_last(self) -> NullsLast<Self>
Specify that nulls should come after other values in this ordering.
Normally, nulls come last when sorting in ascending order and first when sorting in descending order.
Example
diesel::insert_into(nullable_numbers)
.values(&vec![
nullable_number.eq(None),
nullable_number.eq(Some(1)),
nullable_number.eq(Some(2)),
])
.execute(&connection)?;
let desc_default_nulls = nullable_numbers.select(nullable_number)
.order(nullable_number.desc())
.load(&connection)?;
assert_eq!(vec![None, Some(2), Some(1)], desc_default_nulls);
let desc_nulls_last = nullable_numbers.select(nullable_number)
.order(nullable_number.desc().nulls_last())
.load(&connection)?;
assert_eq!(vec![Some(2), Some(1), None], desc_nulls_last);