pub trait PgTextExpressionMethods: Expression + Sized {
// Provided methods
fn ilike<T>(self, other: T) -> ILike<Self, T>
where T: AsExpression<Text> { ... }
fn not_ilike<T>(self, other: T) -> NotILike<Self, T>
where T: AsExpression<Text> { ... }
fn similar_to<T>(self, other: T) -> SimilarTo<Self, T>
where T: AsExpression<Text> { ... }
fn not_similar_to<T>(self, other: T) -> NotSimilarTo<Self, T>
where T: AsExpression<Text> { ... }
fn is_json(self) -> IsJson<Self> { ... }
fn is_not_json(self) -> IsNotJson<Self> { ... }
fn is_json_object(self) -> IsJsonObject<Self> { ... }
fn is_not_json_object(self) -> IsNotJsonObject<Self> { ... }
fn is_json_array(self) -> IsJsonArray<Self> { ... }
fn is_not_json_array(self) -> IsNotJsonArray<Self> { ... }
fn is_json_scalar(self) -> IsJsonScalar<Self> { ... }
fn is_not_json_scalar(self) -> IsNotJsonScalar<Self> { ... }
}
postgres_backend
only.Expand description
PostgreSQL specific methods present on text expressions.
Provided Methods§
Sourcefn ilike<T>(self, other: T) -> ILike<Self, T>where
T: AsExpression<Text>,
fn ilike<T>(self, other: T) -> ILike<Self, T>where
T: AsExpression<Text>,
Creates a PostgreSQL ILIKE
expression
§Example
let starts_with_s = animals
.select(species)
.filter(name.ilike("s%").or(species.ilike("s%")))
.get_results::<String>(connection)?;
assert_eq!(vec!["spider"], starts_with_s);
Sourcefn not_ilike<T>(self, other: T) -> NotILike<Self, T>where
T: AsExpression<Text>,
fn not_ilike<T>(self, other: T) -> NotILike<Self, T>where
T: AsExpression<Text>,
Creates a PostgreSQL NOT ILIKE
expression
§Example
let doesnt_start_with_s = animals
.select(species)
.filter(name.not_ilike("s%").and(species.not_ilike("s%")))
.get_results::<String>(connection)?;
assert_eq!(vec!["dog"], doesnt_start_with_s);
Sourcefn similar_to<T>(self, other: T) -> SimilarTo<Self, T>where
T: AsExpression<Text>,
fn similar_to<T>(self, other: T) -> SimilarTo<Self, T>where
T: AsExpression<Text>,
Creates a PostgreSQL SIMILAR TO
expression
§Example
let starts_with_s = animals
.select(species)
.filter(name.similar_to("s%").or(species.similar_to("s%")))
.get_results::<String>(connection)?;
assert_eq!(vec!["spider"], starts_with_s);
Sourcefn not_similar_to<T>(self, other: T) -> NotSimilarTo<Self, T>where
T: AsExpression<Text>,
fn not_similar_to<T>(self, other: T) -> NotSimilarTo<Self, T>where
T: AsExpression<Text>,
Creates a PostgreSQL NOT SIMILAR TO
expression
§Example
let doesnt_start_with_s = animals
.select(species)
.filter(name.not_similar_to("s%").and(species.not_similar_to("s%")))
.get_results::<String>(connection)?;
assert_eq!(vec!["dog"], doesnt_start_with_s);
Sourcefn is_json(self) -> IsJson<Self>
fn is_json(self) -> IsJson<Self>
Creates a PostgreSQL IS JSON
expression.
Requires PostgreSQL>=16
This operator returns true whether an object is a valid JSON
§Example
let res = diesel::select(("1".into_sql::<Text>().is_json())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("[1,2,3]".into_sql::<Text>().is_json())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("{\"products\": [1,2,3]}".into_sql::<Text>().is_json())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("(1,2,3)".into_sql::<Text>().is_json())).get_result::<bool>(conn)?;
assert_eq!(res, false);
Sourcefn is_not_json(self) -> IsNotJson<Self>
fn is_not_json(self) -> IsNotJson<Self>
Creates a PostgreSQL IS NOT JSON
expression.
Requires PostgreSQL>=16
This operator returns true whether an object is not a valid JSON
§Example
let res = diesel::select(("1".into_sql::<Text>().is_not_json())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("[1,2,3]".into_sql::<Text>().is_not_json())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("{\"products\": [1,2,3]}".into_sql::<Text>().is_not_json())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("(1,2,3)".into_sql::<Text>().is_not_json())).get_result::<bool>(conn)?;
assert_eq!(res, true);
Sourcefn is_json_object(self) -> IsJsonObject<Self>
fn is_json_object(self) -> IsJsonObject<Self>
Creates a PostgreSQL IS JSON OBJECT
expression.
Requires PostgreSQL>=16
This operator returns true whether an object is a valid JSON
§Example
let res = diesel::select(("123".into_sql::<Text>().is_json_object())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("abc".into_sql::<Text>().is_json_object())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("{\"products\": [1,2,3]}".into_sql::<Text>().is_json_object())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("[1,2,3]".into_sql::<Text>().is_json_object())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("\"abc\"".into_sql::<Text>().is_json_object())).get_result::<bool>(conn)?;
assert_eq!(res, false);
Sourcefn is_not_json_object(self) -> IsNotJsonObject<Self>
fn is_not_json_object(self) -> IsNotJsonObject<Self>
Creates a PostgreSQL IS NOT JSON OBJECT
expression.
Requires PostgreSQL>=16
This operator returns true whether an object is not a valid JSON
§Example
let res = diesel::select(("123".into_sql::<Text>().is_not_json_object())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("abc".into_sql::<Text>().is_not_json_object())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("{\"products\": [1,2,3]}".into_sql::<Text>().is_not_json_object())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("[1,2,3]".into_sql::<Text>().is_not_json_object())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("\"abc\"".into_sql::<Text>().is_not_json_object())).get_result::<bool>(conn)?;
assert_eq!(res, true);
Sourcefn is_json_array(self) -> IsJsonArray<Self>
fn is_json_array(self) -> IsJsonArray<Self>
Creates a PostgreSQL IS JSON ARRAY
expression.
Requires PostgreSQL>=16
This operator returns true whether an object is a valid JSON ARRAY
§Example
let res = diesel::select(("123".into_sql::<Text>().is_json_array())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("abc".into_sql::<Text>().is_json_array())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("{\"products\": [1,2,3]}".into_sql::<Text>().is_json_array())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("[1,2,3]".into_sql::<Text>().is_json_array())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("\"abc\"".into_sql::<Text>().is_json_array())).get_result::<bool>(conn)?;
assert_eq!(res, false);
Sourcefn is_not_json_array(self) -> IsNotJsonArray<Self>
fn is_not_json_array(self) -> IsNotJsonArray<Self>
Creates a PostgreSQL IS NOT JSON ARRAY
expression.
Requires PostgreSQL>=16
This operator returns true whether an object is not a valid JSON ARRAY
§Example
let res = diesel::select(("123".into_sql::<Text>().is_not_json_array())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("abc".into_sql::<Text>().is_not_json_array())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("{\"products\": [1,2,3]}".into_sql::<Text>().is_not_json_array())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("[1,2,3]".into_sql::<Text>().is_not_json_array())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("\"abc\"".into_sql::<Text>().is_not_json_array())).get_result::<bool>(conn)?;
assert_eq!(res, true);
Sourcefn is_json_scalar(self) -> IsJsonScalar<Self>
fn is_json_scalar(self) -> IsJsonScalar<Self>
Creates a PostgreSQL IS JSON SCALAR
expression.
Requires PostgreSQL>=16
This operator returns true whether an object is a valid JSON SCALAR
§Example
let res = diesel::select(("123".into_sql::<Text>().is_json_scalar())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("abc".into_sql::<Text>().is_json_scalar())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("{\"products\": [1,2,3]}".into_sql::<Text>().is_json_scalar())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("[1,2,3]".into_sql::<Text>().is_json_scalar())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("\"abc\"".into_sql::<Text>().is_json_scalar())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(sql::<Nullable<Text>>("NULL").is_json_scalar()).get_result::<Option<bool>>(conn)?;
assert!(res.is_none());
Sourcefn is_not_json_scalar(self) -> IsNotJsonScalar<Self>
fn is_not_json_scalar(self) -> IsNotJsonScalar<Self>
Creates a PostgreSQL IS NOT JSON SCALAR
expression.
Requires PostgreSQL>=16
This operator returns true whether an object is not a valid JSON SCALAR
§Example
let res = diesel::select(("123".into_sql::<Text>().is_not_json_scalar())).get_result::<bool>(conn)?;
assert_eq!(res, false);
let res = diesel::select(("abc".into_sql::<Text>().is_not_json_scalar())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("{\"products\": [1,2,3]}".into_sql::<Text>().is_not_json_scalar())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("[1,2,3]".into_sql::<Text>().is_not_json_scalar())).get_result::<bool>(conn)?;
assert_eq!(res, true);
let res = diesel::select(("\"abc\"".into_sql::<Text>().is_not_json_scalar())).get_result::<bool>(conn)?;
assert_eq!(res, false);
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.