使用解码来使用case-when移植SQL的简便方法

时间:2016-06-02 10:47:16

标签: sql oracle porting

我有数百个包含使用Oracle内置函数decode的SQL的文件。我想将它们移植到使用case-when代替。是否有一个程序或一组程序可以自动执行此操作?

2 个答案:

答案 0 :(得分:1)

我认为没有这样完整的解决方案。您必须为此任务执行一些(大读)工作。你应该做一些解析,选择其中一种方式

  1. 使用完整的 Oracle SQL 解析器并以您自己的方式处理AST,然后将修补的AST刷新到文件中(例如,尝试查找解析器Parser for Oracle SQL)。
  2. 编写自己的解析器足够(我的意思是Oracle SQL语言的一个较小的子集)来处理解码(我猜这很难,因为解码可以出现在语法的许多地方\级别,你必须实现很多)。这里的工具是lex + yacc,ANTLR等。

答案 1 :(得分:-2)

我不记得任何会将你的Decode语句移植到case-when的东西。 为什么你甚至想要这样做,除非你强制要求。 解码更加复杂,即使条件数量增加,也能提供可读代码。