File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2350,17 +2350,21 @@ def tobinary_sql(self, expression: exp.ToBinary) -> str:
23502350 result = self .func ("TO_BINARY" , value )
23512351 return f"TRY({ result } )" if is_safe else result
23522352
2353- @unsupported_args ("format" )
23542353 def tonumber_sql (self , expression : exp .ToNumber ) -> str :
2354+ fmt = expression .args .get ("format" )
23552355 precision = expression .args .get ("precision" )
23562356 scale = expression .args .get ("scale" )
23572357
2358- if precision and scale :
2359- decimal_type = exp .DataType .build (f"DECIMAL({ precision .name } , { scale .name } )" )
2360- else :
2361- decimal_type = exp .DataType .build ("DOUBLE" )
2358+ if not fmt and precision and scale :
2359+ return self .sql (
2360+ exp .cast (
2361+ expression .this ,
2362+ f"DECIMAL({ self .sql (precision )} , { self .sql (scale )} )" ,
2363+ dialect = "duckdb" ,
2364+ )
2365+ )
23622366
2363- return self . sql ( exp . cast (expression . this , decimal_type ) )
2367+ return super (). tonumber_sql (expression )
23642368
23652369 def _greatest_least_sql (self , expression : exp .Greatest | exp .Least ) -> str :
23662370 """
You can’t perform that action at this time.
0 commit comments