测试数据
\n\nDECLARE @t TABLE (x NUMERIC(10,2), y NUMERIC(10,2), radius NUMERIC(10,2))\nINSERT INTO @t\nVALUES (3.5,3.5, 5.5),(20.5,20.5, 10.5), (30.5,30.5, 20.5)\nRun Code Online (Sandbox Code Playgroud)\n\n询问
\n\nDECLARE @p1 NUMERIC(10,2) = 5.5 --<-- Point to check\nDECLARE @p2 NUMERIC(10,2) = 5.5\n\n\nSELECT *, CASE WHEN POWER( @p1 - x, 2) + POWER( @p2 - y, 2) <= POWER(radius, 2)\n THEN 'Inside The Circle'\n WHEN POWER( @p1 - x, 2) + POWER( @p2 - y, 2) > POWER(radius, 2)\n THEN 'Outside the Circle' END [Inside/Outside]\nFROM @t\nRun Code Online (Sandbox Code Playgroud)\n\n结果集
\n\n\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97\n\xe2\x95\x91 x \xe2\x95\x91 y \xe2\x95\x91 radius \xe2\x95\x91 Inside/Outside \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 3.50 \xe2\x95\x91 3.50 \xe2\x95\x91 5.50 \xe2\x95\x91 Inside The Circle \xe2\x95\x91\n\xe2\x95\x91 20.50 \xe2\x95\x91 20.50 \xe2\x95\x91 10.50 \xe2\x95\x91 Outside the Circle \xe2\x95\x91\n\xe2\x95\x91 30.50 \xe2\x95\x91 30.50 \xe2\x95\x91 20.50 \xe2\x95\x91 Outside the Circle \xe2\x95\x91\n\xe2\x95\x9a\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa9\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa9\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa9\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x9d\nRun Code Online (Sandbox Code Playgroud)\n\n由于问题已关闭,无法添加另一个答案,因此我编辑了此内容以包括使用 Sql ServerGeometry类型的解决方案...[使用与上面相同的数据点,加上一个来在圆圈上精确演示]
Declare @t TABLE \n (x NUMERIC(10,2), y NUMERIC(10,2), \n radius NUMERIC(10,2))\nInsert @t\nValues (3.5,3.5, 5.5),(20.5,20.5, 10.5), \n (30.5,30.5, 20.5), (-5.5, 5.5, 11.0)\n\n-- --------------------------\nDeclare @pX float = 5.5 \nDeclare @pY float = 5.5\nDeclare @c geometry;\nDeclare @p geometry;\nSelect x, y, radius, \n (geometry::Point(X, Y, 0)).STDistance(geometry::Point(@pX, @pY, 0))\nFrom @T\nWhere (geometry::Point(X, Y, 0)).STDistance(geometry::Point(@pX, @pY, 0)) > radius\nRun Code Online (Sandbox Code Playgroud)\n