Hallo!
Also:
Im Prinzip hast du die meisten Dinge ganz richtig gemacht. Man kann die Funktionen natürlich auch verschachteln, was die 2. Geometriespalte überflüssig macht und generell ist es fixer und übersichtlicher, die Geometrie mit GeomFromText zu erzeugen. Du scheint ja aber generell mit der DB kein Problem zu haben, also überlasse ich das dem geneigten Leser zu Übung
Zur Ungenauigkeit:
Das Gauß-Krüger-System teilt den Globus in 3° breite Meridianstreifen und projiziert jeden einzelnen auf eine Zylinderwandung, in der die (Erd-)Kugel steckt. Dabei liegen die Pole auf der Wand, eine sog. transversale Mercatorprojektion. Die Punkte der Kugeloberfläche werden nun auf die Zylinderwand projiziert, dabei entstehen bei weit von der Schnittlinie zwischen Kugel und Zylinder große Verzerrungen, deshalb werden immer nur 3°-Streifen projiziert und dann die Kugel um 3° ‘weitergedreht’. Die jeweilige Nummers des Streifens(1,2,3,4,5…) wird als Kennung der x-Koordinate vorangestellt (z.b. 3587132). Trotzdem hattest du die richtige Idee (nur vermutlich den falschen Streifen)
Zur Auswahl hättest du in D:
31466 -> in WGS84 4,5-7,5° (nur ein Zipfelchen im Westen)
31467 -> in WGS84 7,5-10,5°
31468 ->in WGS84 10,5-13,5°
31469 -> in WGS84 13,5-16,5° (nur ein Zipfelchen im Osten)
Es hängt also auch davon ab, wo deine WGS84-Koordinaten liegen, welchen sog. GaußKrügerstreifen du nehmen musst.
Ansonsten gibts zur Entfernung nichts mehr zu sagen:
Die Umkreisabfrage kannst du ähnlich gestalten, in dem du die Distanz im 3146x-System als Where-Kriterium nimmst, dann kannst du einerseits den index benutzen, andererseits in m rechnen, zumindest solange die Entfernungen nicht durch ganz Deutschland gehen. Andernfalls könntest du einen Buffer um den Punkt konstruieren und schauen, welche Punkte dadrin liegen.
Soweit mal
Gruß Uwe