执行SQL Server中列中包含的字符串

执行SQL Server中列中包含的字符串,sql,sql-server,Sql,Sql Server,我需要在SQLServer中执行包含在字符串列中的查询;我该怎么做 我需要用sql\u text中包含的查询结果更新列: 生成以下内容的查询: id_coordenadaGPS, CONCAT('UPDATE CoordenadaGPS SET ogr_geometry = geometry::', ( CASE poly_type WHEN 'POLYGON' THEN 'STPolyFromText' WHEN 'LINESTRI

我需要在SQLServer中执行包含在字符串列中的查询;我该怎么做

我需要用
sql\u text
中包含的查询结果更新列:

生成以下内容的查询:

    id_coordenadaGPS, 
    CONCAT('UPDATE CoordenadaGPS SET ogr_geometry = geometry::', 
    ( CASE poly_type
        WHEN 'POLYGON' THEN 'STPolyFromText'
        WHEN 'LINESTRING' THEN 'STLineFromText'
        ELSE 'STPointFromText'
     END ),
     '("', poly_string, '", 4326) WHERE id = ', id_coordenadaGPS) as sql_text
FROM (
    SELECT CONCAT(poly_type, '(', point, ')') as poly_string, Id_CoordenadaGPS, poly_type FROM (
        SELECT 
            (CASE 
                WHEN y.TOTAL_POINTS = 1 THEN 'POINT' 
                WHEN y.TOTAL_POINTS >= 3 THEN
                    CASE WHEN y.first_point = y.last_point THEN 'POLYGON' ELSE 'LINESTRING' END
                ELSE 'LINE'
            END) as poly_type,
            point,
         Id_CoordenadaGPS
        FROM (
            SELECT STRING_agg( CAST(CONCAT(Latitud,' ', Longitud) as nvarchar(max)), ',') as point, Id_CoordenadaGPS, count(1) AS TOTAL_POINTS,
                (SELECT TOP 1 CONCAT(Latitud,' ', Longitud) FROM puntoGPS WHERE Id_CoordenadaGPS = x.Id_CoordenadaGPS AND Orden = 1) as first_point,
                (SELECT TOP 1 CONCAT(Latitud,' ', Longitud) FROM puntoGPS WHERE Id_CoordenadaGPS = x.Id_CoordenadaGPS AND Orden = (SELECT TOP 1 Orden 
                FROM puntoGPS WHERE Id_CoordenadaGPS = x.Id_CoordenadaGPS ORDER BY Orden DESC  )) as last_point
            FROM (
                SELECT TOP 1000000 latitud, longitud, id_CoordenadaGPS, Orden FROM puntoGPS
                WHERE Id_CoordenadaGPS IN (
                SELECT Id FROM CoordenadaGPS
                )
                ORDER BY orden
            ) x
            GROUP BY Id_CoordenadaGPS
        ) y
    ) z
) FIN
具有顶点坐标的表,绘制顺序和对应图元的ID

带有ID、几何图形类型和每个实体名称的表

我需要使用PuntoGPS表中包含的顶点信息在此表中创建一个ogr_几何列

如果有人有一个“好方法”可以在一个查询中完成所有的工作,那就太棒了

多亏了所有的

试试这个:

declare @Sql_text as varchar(1000)

Select  @Sql_text = Sql_text from your table where idcordonadaGPS = 222

exec(@Sql_text)

您是如何尝试这样做的,具体来说,是什么出了问题?数据是如何在表中结束的?是否在插入前对其进行消毒?(看起来不像)。存储需要执行的查询不仅可怕,而且表明设计没有经过深思熟虑。恭喜!您的数据库刚刚成为SQL注入的牺牲品。Luis,我理解您的观点,但是,如果这是一个内部脚本或没有用户输入的东西(因此没有清理),我不会担心:-)