sql >> Databasteknik >  >> RDS >> Sqlserver

Generera vy med X och Y från geometrityp

Jag tror inte att du kan göra detta i en vy men du kan skapa en tabellvärderad användardefinierad funktion (en funktion som returnerar en tabell) för att få det du vill ha.

Det här exemplet använder en tabell definierad som

CREATE TABLE GeoTable (GeomKey int, vector GEOMETRY)

som lagrar olika geometrityper (i exemplet jag länkade nedan använde jag POINT, MULTIPOINT, LINESTRING och POLYGON).

CREATE FUNCTION dbo.GetVertices()
RETURNS @ret TABLE (GeomKey INT, X INT, Y INT, PointNo INT)
AS
BEGIN
    DECLARE @max INT
    SET @max = (SELECT MAX(vector.STNumPoints()) FROM GeoTable) 

    ;WITH Sequence(Number) AS
    (
        SELECT 1 AS Number
        UNION ALL
        SELECT Number + 1
        FROM Sequence
        WHERE Number < @max
    )
    INSERT INTO @ret 
    SELECT
        gt.GeomKey
        ,gt.vector.STPointN(nums.number).STX AS X
        ,gt.vector.STPointN(nums.number).STY AS Y
        ,nums.number AS PointNo
    FROM GeoTable gt, Sequence nums
    WHERE nums.number <= gt.vector.STNumPoints()
    RETURN
END;

Se detta exempel på SQL-fiol för ett komplett fungerande exempel.




  1. Hur man använder STRCMP() för att jämföra 2 strängar i MySQL

  2. NCHAR(1) vs BIT

  3. MYSQL:Hur hittar man player_id från efternamn?

  4. Hur formaterar man datum från tidsstämpel i PHP?