移除Azure SQL Data Warehouse中SQL视图注释并生成无注释查询
在Azure SQL Data Warehouse中移除SQL视图的所有注释
针对你遇到的正则表达式函数无法生效的问题,以下是处理后完全移除注释的视图创建语句:
CREATE VIEW [dimension].[v_dim_customer] AS SELECT KNA1.fk_MANDT_KUNNR AS sk_customer, KNA1.[NAME1_nom], flag_ext_int.externe_interne_code, flag_ext_int.externe_interne_level_2_code FROM [e3p].[KNA1] KNA1 LEFT OUTER JOIN [e3p].T005T T005T ON KNA1.[fk_MANDT_LAND1] = T005T.[fk_MANDT_LAND1] AND T005T.[bk_SPRAS_code_langue] = N'F' LEFT OUTER JOIN [e3p].T016T ON KNA1.[fk_MANDT_BRSCH] = T016T.[fk_MANDT_BRSCH] AND T016T.[bk_SPRAS_code_langue] = N'F'
由于Azure SQL Data Warehouse对正则函数的支持有限,直接用REGEXP_REPLACE这类函数可能无法正确处理所有注释场景(尤其是跨多行注释或字符串内的注释标记),你可以用以下字符串处理逻辑手动实现注释移除:
处理
--单行注释:
将SQL文本按行拆分,逐行检查是否存在--。如果存在,先判断该标记是否在字符串常量内(通过统计该行中--位置前的单引号数量是否为奇数),若不在字符串内,则截取--之前的内容作为该行的有效代码。处理
/* */多行注释:
循环执行字符串替换,每次找到/*和*/的位置,同样先确认这对标记不在字符串常量内,然后移除两者之间的所有内容(包括标记本身),直到文本中不再包含/*为止。
内容的提问来源于stack exchange,提问作者zle_bi
相关产品推荐
相关产品推荐

