var results = {}; if(/DECRYPT\(\*\)/i|>.test(sql)){ results = "*"; }else{ var tester = /DECRYPT\((?:\s*\w*\s*\,?)*\)/ig|>; var matches; while(matches = tester.exec(sql)){ var lastMatch = new String(RegExp.lastMatch); var columnNames = lastMatch.replace(/DECRYPT\(/i|>, ""); columnNames = columnNames.replace(/\)/|>, ""); columnNames = columnNames.split(/\s*,\s*/); dojo.forEach(columnNames, function(column){ if(/\s*\w* AS (\w*)/i|>.test(column)){ column = column.match(/\s*\w* AS (\w*)/i|>)[1]; } results[column] = true; }); } } return results;