"where" on json field causing Arithmetic overflow error
This isn't anything to do with JSON specifically. You see the same with

SELECT 1
WHERE  '123' &gt; 12.0;


JSON_VALUE has a return type of nvarchar(4000).

The literal 12.0 has a datatype of numeric(3,1).

As numeric/decimal has a higher datatype precedence than nvarchar the result of the function call is cast to numeric(3,1)



You can use an explicit cast to control the scale and precision used yourself.

e.g.

 CAST(JSON_VALUE(LastReadings, '$.lastReadings."7-temp".value') AS NUMERIC(4,1)) &gt; 12.0


Would work fine for your example data.