`

Sql Format

 
阅读更多
SQLLinForm.jar
SQLForm form = new SQLForm();
		form.setCase(false, false);
		form.setLowerCase(false);
		form.setGraphLevel(false);
		form.setSuppressSpace(true);
		form.setQuoteCharacter("'");
		form.setSuppressEmptyLine(true);
		form.setFormatLanguage("SQL");
		form.setBracketSpaces("noSpacesAroundBracket");
		form.setCommaSpaces("oneSpaceAfterComma");
		form.setEqualSpaces("oneSpaceAroundEqual");
		form.setSmallSQLWidth(80);
		form.setPageWidth(80);
		form.setAndOrIndention(true);
		form.setInitialIndentation(8);
		String formatSql = form.formatSQLAsString(SQL);
		System.out.println(formatSql);


My impl:
package com.statestreet.sqlformat;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SqlFormat {
	
	private final static String SQL = 
		"select aa,bb,cc,dd from userrole ur,fdsaf aa where ur.pp='haha' and ur.aa='cc' and c = (select c,fds,s,s from b where a=a) order by ur.cc";

	private final static String INDENT = "\t";
	private final static String ENTER = "\n";
	private final static String COMMA = ",";
	private final static Boolean EXPAND_COMMA_LIST = false;
	private final static String[] KEYWORDS = new String[]{"select","from","where","and","order by"};
	private final static Map<String,Integer> KEYCOUNT= new HashMap<String,Integer>();
	/**
	 * @param args
	 */
	public static void main(String[] args) { 
		String tempSql = SQL;
		for(String keyword:KEYWORDS){
			String formatSql = format(keyword,tempSql);
			tempSql = formatSql;
		}
		int length = KEYWORDS.length-1;
		tempSql = tempSql.substring(length);
		System.out.println(tempSql);
	}

	private static String format(String keyword,String normalSql) {
		List<String> sectionList = splitKeyWords(keyword,normalSql);
		//System.out.println(sectionList);
		//System.out.println(sectionList.size());
		String formatsql = packageSql(sectionList);
		//System.out.println(formatsql);
		return formatsql;
	}

	private static String packageSql(List<String> sectionList) {
		StringBuffer sb = new StringBuffer();
		String previouKeyWord = null;
		for(String section:sectionList){ 
			if(section != null && !section.equals("")){
				if(isKeyWords(section)){ 
					if(KEYCOUNT.containsKey(section)){
						if(!section.equalsIgnoreCase("and")){
							KEYCOUNT.put(section, KEYCOUNT.get(section)+1);
						} 
					}else{
						KEYCOUNT.put(section, 1);
					} 
					Integer count = KEYCOUNT.get(section);
					for(int i=1;i<count;i++){
						sb.append(INDENT);
					}
					sb.append(section.toUpperCase()).append(ENTER);
					previouKeyWord = section;
				}else{
					Integer count = KEYCOUNT.get(previouKeyWord);
					if(count!=null){
						for(int i=1;i<count;i++){
							sb.append(INDENT);
						}
					}
					if(EXPAND_COMMA_LIST){
						String subsections[] = section.split(COMMA);
						for(String subsection:subsections){
							sb.append(INDENT).append(subsection).append(COMMA).append(ENTER);
						}
					}else{
						sb.append(INDENT).append(section).append(ENTER);
					}
				}
				
			}
		}
		return sb.toString();
	}

	private static boolean isKeyWords(String section) {
		for(String keyword:KEYWORDS){
			if(keyword.equalsIgnoreCase(section)){
				return true;
			}
		}
		return false;
	}

	private static List<String> splitKeyWords(String keyword,String normalSql) {
		String tempsql = normalSql;
		List<String> sectionList = new ArrayList<String>();  
		String sections[] = tempsql.split(keyword);
		for(String section:sections){ 
			 sectionList.add(section);
			 sectionList.add(keyword); 
		} 
		sectionList=sectionList.subList(0, sectionList.size()-1);
		return sectionList;
	}
 
}



I don't think they are well, will be search other implement.

like the Notepad++ 's plugin
like the sqlTools 's plugin
like the plsql 's plugin.
分享到:
评论

相关推荐

    wjz-sqlFormat-1.4

    DBeaver工具很强大,但在sql格式化方面不尽人意,所以利用它的扩展...命令行输入:java -jar wjz-sqlFormat-1.4/wjz-sqlFormat.jar -filePath ${file}。勾选使用临时文件,超时时间2000毫秒 2、要求java jdk1.8及以上

    wjz-sqlFormat

    格式化后接近PLSQL格式化效果。

    sqlFormat X64 for Notepad++

    用于Notepad++的插件:sqlFormat 由于官方只提供x86版本的,因此编译个X64的。 用来格式化SQL 语句,支持64位的notepad++ 依赖 VC 2015 x64 runtime

    SQLFormat.zip

    SQL语句格式化工具

    DBeaver sql格式化V1.5

    DBeaver工具很强大,但在sql格式化方面不尽人意,所以利用它的扩展...命令行输入:java -jar wjz-sqlFormat-1.3/wjz-sqlFormat.jar -filePath ${file}。勾选使用临时文件,超时时间2000毫秒 2、要求java jdk1.8及以上

    sqlformat:使用sqlformat或pgformatter在Emacs中重新格式化SQL代码

    sqlformat.el 这个Emacs库提供命令和次要模式,以使用外部程序(例如 , 或轻松地重新格式化SQL。 安装 如果选择不使用中的便捷软件包之一,则需要将包含sqlformat.el的目录添加到load-path ,然后(require 'sql...

    SQL FORMAT() 函数

    SQL FORMAT() 函数 FORMAT() 函数 FORMAT() 函数用于对字段的显示进行格式化。 SQL FORMAT() 语法 SELECT FORMAT(column_name,format) FROM table_name; 参数 描述 column_name 必需。要格式化的字段。 ...

    DBeaver sql格式化V1.1

    DBeaver工具很强大,但在sql...命令行输入:java -jar wjz-sqlFormat-1.0/wjz-sqlFormat.jar -filePath ${file}。勾选使用临时文件,超时时间2000毫秒 2、要求java jdk1.8及以上,支持sqlInForm和druid两种格式化模式

    SQL Format-crx插件

    语言:English (United States) 格式化SQL代码 功能: 免费且简单的此扩展格式格式化了您SQL代码。 2.0 *应用程序重新重写 *添加主题光和... 此应用程序使用https://sqlformat.org/团队的API SQL格式。 谢谢所有人!!!

    sql-format-plugin:这是来自chrome的Sql Format插件的源代码-Form source code

    sql格式插件 这是chrome的Sql Format插件的源代码。 添加到您的chrome中:D

    DBeaver sql格式化V1.3

    DBeaver工具很强大,但在sql格式化方面不尽人意,所以利用它的扩展...命令行输入:java -jar wjz-sqlFormat-1.3/wjz-sqlFormat.jar -filePath ${file}。勾选使用临时文件,超时时间2000毫秒 2、要求java jdk1.8及以上

    sql format()函数的用法及简单实例

    下面小编就为大家带来一篇sql format函数()的用法及简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    SQL 语法 SQL 总结 SQL教程

    SQL 基础 SQL 首页 SQL 简介 SQL 语法 SQL select SQL distinct SQL where SQL AND & OR SQL Order By SQL insert SQL update SQL delete ...SQL format() SQL 总结 SQL 快速索引 SQL 总结

    sqlformat:SqlFormatter 库的 CLI 改编

    mv sqlformat.phar /usr/local/bin/sqlformat 用法 Usage: $basename [--no-format] [--no-highlight] [&lt;sql&gt;] $basename [--no-comment] [--no-highlight] [&lt;sql&gt;] $basename [-c | --compress] [&lt;sql&gt;] $...

    sql格式化JS脚本

    sql 前端格式化 脚本,使用很简单,调用sqlFormatter.format(sql语句)可以获取格式化后的sql语句。

    FormatSQL(SQL脚本转化器)

    c# 把c#中sql代码转换成数据库sql语句,同样也可反转和格式化SQL语句

    sqlFormat.dll

    下载之后,直接扔到notepad安装目录的plugin目录里,关闭notepad,重新打开就行了,简单好用

    SQL格式化工具

    SQL格式化工具,可以批量添加逗号,引号,消除空格符、制表符、回车符

    SQL格式「SQL Format」-crx插件

    一个chrome插件来格式化你的SQL代码。 功能:此扩展程序免费且容易格式化您SQL代码。...此应用程序使用https://sqlformat.org/团队提供的api SQL格式。 谢谢大家! 支持语言:English (United States)

Global site tag (gtag.js) - Google Analytics