SQL Server: Error converting data type varchar to float

前端 未结 2 457
悲哀的现实
悲哀的现实 2021-01-28 10:05

I have the following SELECT statement to calculate RADIANS and COS.

SELECT COS(RADIANS(latitude)) as Lat 
FROM tbl_geomet         


        
相关标签:
2条回答
  • 2021-01-28 10:42

    You can use:

    SELECT      CASE
                    WHEN PATINDEX('%[^0-9]%', latitude) > 0 THEN 0
                    ELSE Cos(Radians(convert(float,latitude)))
                end as latitude          
    FROM        tbl_geometry
    

    You can use the THEN to fill the attribute with null or other values if non-convertable values are encountered. Or you can use the PATINDEX in the WHERE if you want to skip those rows all together. (You may have to play around with the patindex, I don't usually use floats, so I'm not sure what is and isn't allowed. You may want to include decimal points, for example.)

    0 讨论(0)
  • 2021-01-28 10:46

    Use try_convert() to find the invalid data:

    select latitude
    from tbl_geometry
    where try_convert(float, latitude) is null;
    

    try_convert() is available in SQL Server 2012+.

    0 讨论(0)
提交回复
热议问题