Back to OIM Explorer

dbo.QBM_FCVStringToFloat

Scalar FunctionSQL_SCALAR_FUNCTIONSandbox DB

Scalar Function.

Source: sandbox-db sys.sql_modules

Source size: 1.597 characters

Interpretation

  • Database function. Usually supports views, validation, or calculated predicates; look at referenced-by entries for callers.

Relations

  • No extracted relations.

Typed Edges

  • No typed edges extracted for this source.

References

  • No direct source references extracted.

Referenced By

Complete Source

SQL113 lines
1CREATE FUNCTION dbo.QBM_FCVStringToFloat(2  @InputValue nvarchar(256),3  @DefaultValue float4) RETURNS float5  WITH SCHEMABINDING6AS7BEGIN8  DECLARE @work nvarchar(256)9  DECLARE @ergFloat float = NULL10  DECLARE @work2 nvarchar(256)11  DECLARE @posi int12  DECLARE @in nvarchar(256) = replace(replace(trim(isnull(@InputValue, '')), N ',', N '.'),13  N ' ',14  N '')15  SELECT16    @ergFloat = TRY_CONVERT(float,17    @in)18  IF @ergFloat IS NOT NULL AND @in > ' '19  BEGIN20    GOTO endLabel21  END22  SELECT @work = @in23  SELECT @work2 = N ''24  IF25  LEFT(@work,26  1) IN(N '-',27  N '+')28  BEGIN29    SELECT @work2 =30    LEFT(@work,31    1)32    SELECT33      @work = substring(@work,34      2,35      255)36  END37  SELECT @posi = 138  WHILE @posi <= len(@work) AND substring(@work,39  @posi,40  1) IN(N '0',41  N '1',42  N '2',43  N '3',44  N '4',45  N '5',46  N '6',47  N '7',48  N '8',49  N '9',50  N '.')51  BEGIN52    SELECT53      @work2 = CONCAT(@work2,54      substring(@work, @posi, 1))55    SELECT @posi += 156  END57  IF substring(@work,58  @posi,59  1) IN(N 'E')60  BEGIN61    SELECT62      @work2 = CONCAT(@work2,63      substring(@work, @posi, 1))64    SELECT @posi += 165  END66  ELSE67  BEGIN68    GOTO ExponentReady69  END70  IF substring(@work,71  @posi,72  1) IN(N '-',73  N '+')74  BEGIN75    SELECT76      @work2 = CONCAT(@work2,77      substring(@work, @posi, 1))78    SELECT @posi += 179  END80  WHILE @posi <= len(@work) AND substring(@work,81  @posi,82  1) IN(N '0',83  N '1',84  N '2',85  N '3',86  N '4',87  N '5',88  N '6',89  N '7',90  N '8',91  N '9')92  BEGIN93    SELECT94      @work2 = CONCAT(@work2,95      substring(@work, @posi, 1))96    SELECT @posi += 197  END98  ExponentReady:99  IF @work2 = N ''100  BEGIN101    SELECT @ergfloat = @defaultvalue102    GOTO endLabel103  END104  SELECT105    @ergFloat = try_convert(float,106    @work2)107  IF @ergFloat IS NULL108  BEGIN109    SELECT @ergfloat = @defaultvalue110  END111  endLabel:112  RETURN(@ergFloat)113END
Open raw exported source
SQL ยท Raw12 lines
1    create   function dbo.QBM_FCVStringToFloat (@InputValue nvarchar(256) , @DefaultValue float ) returns float  with SCHEMABINDING as begin declare2 @work nvarchar(256) declare @ergFloat float = null declare @work2 nvarchar(256) declare @posi int declare @in nvarchar(256) = replace(replace(trim(isnull3(@InputValue, '')) , N',', N'.') , N' ', N'') select @ergFloat = TRY_CONVERT(float, @in) if @ergFloat is not null and @in > ' ' begin goto endLabel end4 select @work = @in   select @work2 = N'' if left(@work,1) in (N'-', N'+') begin select @work2 = left(@work,1) select @work = substring( @work, 2,255) 5end select @posi = 1 while @posi <= len(@work) and substring(@work, @posi, 1) in (N'0', N'1', N'2', N'3', N'4', N'5', N'6', N'7', N'8', N'9', N'.') begin6 select @work2 = concat(@work2 , substring(@work, @posi, 1)) select @posi += 1 end if substring(@work, @posi, 1) in (N'E') begin select @work2 = concat7(@work2 , substring(@work, @posi, 1)) select @posi += 1 end else begin goto ExponentReady end if substring(@work, @posi, 1) in (N'-', N'+') begin select8 @work2 = concat(@work2 , substring(@work, @posi, 1)) select @posi += 1 end while @posi <= len(@work) and substring(@work, @posi, 1) in (N'0', N'1', N'2'9, N'3', N'4', N'5', N'6', N'7', N'8', N'9') begin select @work2 = concat(@work2 , substring(@work, @posi, 1)) select @posi += 1 end ExponentReady: if @work210 = N'' begin select @ergfloat = @defaultvalue goto endLabel end select @ergFloat = try_convert(float, @work2) if @ergFloat is null begin select @ergfloat11 = @defaultvalue end endLabel: return(@ergFloat) end 12