@@ -1883,7 +1883,7 @@ impl Expr {
18831883 /// );
18841884 /// assert_eq!(
18851885 /// query.to_string(PostgresQueryBuilder),
1886- /// r#"SELECT CAST("font_size" AS text) FROM "character""#
1886+ /// r#"SELECT CAST("font_size" AS " text" ) FROM "character""#
18871887 /// );
18881888 /// assert_eq!(
18891889 /// query.to_string(SqliteQueryBuilder),
@@ -1902,7 +1902,7 @@ impl Expr {
19021902 /// );
19031903 /// assert_eq!(
19041904 /// query.to_string(PostgresQueryBuilder),
1905- /// r#"INSERT INTO "character" ("font_size") VALUES (CAST('large' AS FontSizeEnum))"#
1905+ /// r#"INSERT INTO "character" ("font_size") VALUES (CAST('large' AS " FontSizeEnum" ))"#
19061906 /// );
19071907 /// assert_eq!(
19081908 /// query.to_string(SqliteQueryBuilder),
@@ -2471,6 +2471,38 @@ impl SimpleExpr {
24712471 Self :: FunctionCall ( func)
24722472 }
24732473
2474+ /// Express a case-sensitive `CAST AS` expression.
2475+ ///
2476+ /// # Examples
2477+ ///
2478+ /// ```
2479+ /// use sea_query::{tests_cfg::*, *};
2480+ ///
2481+ /// let query = Query::select()
2482+ /// .expr(Expr::value("1").cast_as_quoted(Alias::new("MyType"), '"'.into()))
2483+ /// .to_owned();
2484+ ///
2485+ /// assert_eq!(
2486+ /// query.to_string(MysqlQueryBuilder),
2487+ /// r#"SELECT CAST('1' AS "MyType")"#
2488+ /// );
2489+ /// assert_eq!(
2490+ /// query.to_string(PostgresQueryBuilder),
2491+ /// r#"SELECT CAST('1' AS "MyType")"#
2492+ /// );
2493+ /// assert_eq!(
2494+ /// query.to_string(SqliteQueryBuilder),
2495+ /// r#"SELECT CAST('1' AS "MyType")"#
2496+ /// );
2497+ /// ```
2498+ pub fn cast_as_quoted < T > ( self , type_name : T , q : Quote ) -> Self
2499+ where
2500+ T : IntoIden ,
2501+ {
2502+ let func = Func :: cast_as_quoted ( self , type_name, q) ;
2503+ Self :: FunctionCall ( func)
2504+ }
2505+
24742506 /// Create any binary operation
24752507 ///
24762508 /// # Examples
0 commit comments