我有一个类似的用例,因为我想格式化我的 SQL 查询。例如嵌套查询:
String query = '''
select ${CONTROL_ID} from ${TABLE_NAME}
where
location_id = (
select id from location where code = ${locationCode}
)
''';
Groovy 看起来比 Java 版本好很多,"..."+ TABLE_NAME +"..."
我相信您会同意。
这种字符串不适用于该.stripIndent()
方法。相反,我保留(上)中的新行是query
出于某种目的——注意行尾没有“\”。
因此
String query = """
select ${CONTROL_ID} from ${TABLE_NAME}
where
location_id = (
select id from location where code = '${locationCode}'
)
""".replaceAll( /\n\s*/, " " );
println " Query= ${query};";
给出一个格式整齐的单行 SQL 查询结果:
Query = select id from controls where location_id = ( select id from location where code = '003');
我觉得这很有帮助,也更容易阅读。我用一个空格替换以确保 SQL 保持离散。重要的部分是使用 newline( \n
) 作为事实上的开始行或锚点。适合混合 TAB-s 和 SPACE-s。
当然,它也适用于原始问题。