SQL Server 2008 でこれを実現する関数は見つかりませんが、SQL Server 2008 の sql 関数も比較的初めてです。
SQL Server 2008 を扱うときは、通常、PostGIS フォーラムとメーリング リストをチェックして、そこでどのように処理されているかを確認します (PostgreSQL-PostGIS は、これよりずっと前から行われています)。誰かが、あなたが求めている結果のように見えるこの問題とは逆の問題を抱えているようです。
残念ながら、ST_LineMerge (または STLineMerge) はないので、おそらく独自のものを作成する必要があります。
これらの例がすべての場合に機能するかどうかはわかりません (また、折れ線自体は順番どおりではありません)。
select geometry::STGeomFromText(Replace(@g2.STSymDifference(@g1).ToString(),'))','),' + Replace(@g1.STIntersection(@g2).ToString(),'LINESTRING','') + ')'), @g1.STSrid).STAsText()
実際の折れ線データを使用した同じロジックは次のとおりです。
DECLARE @g1 geometry;
DECLARE @g2 geometry;
DECLARE @g3 geometry;
SET @g1 = geometry::STGeomFromText('LINESTRING(0 0, 0 20)', 0);
SET @g2 = geometry::STGeomFromText('LINESTRING(0 5, 0 10)', 0);
SELECT @g1.STIntersection(@g2).ToString();
SELECT @g1.STIntersection(@g2).STAsText();
SELECT @g2.STSymDifference(@g1).ToString();
select @g1.STIntersection(@g2).ToString();
SET @g3 = geometry::STGeomFromText(Replace(@g2.STSymDifference(@g1).ToString(),'))','),' + Replace(@g1.STIntersection(@g2).ToString(),'LINESTRING','') + ')'), @g1.STSrid);
select @g3.STAsText();