Tsql 如何拆分T-SQL命令

Tsql 如何拆分T-SQL命令,tsql,split,command-line-arguments,visual-foxpro,Tsql,Split,Command Line Arguments,Visual Foxpro,如何在中拆分T-SQL命令 SELECT FROM WHERE GROUP 例如,我需要拆分此命令 Text To lcSQLCommand TextMerge NoShow Flags 1 Pretext 15 SELECT a.HabitacionID, a.TipoID, b.AlquilerID, b.Desde, b.Hasta, IFNULL(b.Estado, 0) Estado, c.Habitacion,

如何在中拆分T-SQL命令

SELECT    FROM    WHERE    GROUP
例如,我需要拆分此命令

Text To lcSQLCommand TextMerge NoShow Flags 1 Pretext 15
         SELECT a.HabitacionID, a.TipoID, b.AlquilerID, b.Desde, b.Hasta, IFNULL(b.Estado, 0) Estado,
                 c.Habitacion, c.Precio1 Precio
                 FROM habitaciones a
                      LEFT JOIN (SELECT HabitacionID, AlquilerID, Desde, Hasta, Estado
                                        FROM alquiler 
                                        WHERE (Estado = 2 AND Desde <= CURDATE()) OR Estado = 1
                                        ) b ON a.HabitacionID = b.HabitacionID
                      LEFT JOIN habitaciones_tipo c ON a.TipoID = c.TipoID
EndText

致意

泽罗伯托

文本到lcSQLCommand文本合并NoShow标志1借口15 选择a.habicionid、a.TipoID、b.AlquilerID、b.Desde、b.Hasta、IFNULLb.Estado、0 Estado、, c、 居住区,c.Precio 1 Precio 从habitaciones a 左连接选择HabitacionID、AlquilerID、Desde、Hasta、Estado 来自阿尔基勒
其中Estado=2,Desde查看STREXTRACT函数。它允许您通过指定开始和结束分隔符来分隔字符串。例如,要获取字段列表,您可以使用:

lcFieldList = STREXTRACT(lcSQLCommand, "SELECT", "FROM")
对于您需要的其他内容,它变得更加复杂,因为您必须检查WHERE和groupby关键字的存在,以确切知道您有什么分隔符,但整个过程不应该超过15或20行


注意:我假设您希望在VFP中执行此操作。

请查看STREXTRACT函数。它允许您通过指定开始和结束分隔符来分隔字符串。例如,要获取字段列表,您可以使用:

lcFieldList = STREXTRACT(lcSQLCommand, "SELECT", "FROM")
对于您需要的其他内容,它变得更加复杂,因为您必须检查WHERE和groupby关键字的存在,以确切知道您有什么分隔符,但整个过程不应该超过15或20行


注意:我假设您希望在VFP中执行此操作。

您可以使用TSQL解析器将语句分解为单独的元素,然后根据需要重新组装各种子句。您可以使用TSQL解析器将语句分解为单独的元素,然后根据需要重新组装各种子句。可能它是一个DLL允许我在vfpy中使用它的库您应该能够在T-SQL中执行类似的操作。但是,为什么要尝试拆分查询?这里的目标是什么?我有一个SQLTable对象文本到lcSQLCommand文本合并NoShow标志1借口15选择a.habicionid、a.TipoID、b.AlquilerID、b.Desde、b.Hasta、IFNULLb.Estado、0 Estado。。。。EndText loTable=NewObjectSQLTable,MySQL.Vcx loTable.OpenlcSQLCommand,habitaciones,AlquilerID在内部分隔T-SQL命令,因为当我想要执行搜索时,我只执行这个loTable.Retrieveb.AlquilerID=5Thanks@TamarE.Granor当有像SelectionId和FromDate这样的对象名时,它会变得更复杂。@HABO:好的。在STREXTRACT命令中可能应该包含尾随空格。也许它可以是一个DLL库,允许我在vfpy中使用它。你应该能够在T-SQL中执行类似的操作。但是,为什么要尝试拆分查询?这里的目标是什么?我有一个SQLTable对象文本到lcSQLCommand文本合并NoShow标志1借口15选择a.habicionid、a.TipoID、b.AlquilerID、b.Desde、b.Hasta、IFNULLb.Estado、0 Estado。。。。EndText loTable=NewObjectSQLTable,MySQL.Vcx loTable.OpenlcSQLCommand,habitaciones,AlquilerID在内部分隔T-SQL命令,因为当我想要执行搜索时,我只执行这个loTable.Retrieveb.AlquilerID=5Thanks@TamarE.Granor当有像SelectionId和FromDate这样的对象名时,它会变得更复杂。@HABO:好的。可能应该在STREXTRACT命令中包含尾随空格。
lcFieldList = STREXTRACT(lcSQLCommand, "SELECT", "FROM")