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.
分享到:
相关推荐
DBeaver工具很强大,但在sql格式化方面不尽人意,所以利用它的扩展...命令行输入:java -jar wjz-sqlFormat-1.4/wjz-sqlFormat.jar -filePath ${file}。勾选使用临时文件,超时时间2000毫秒 2、要求java jdk1.8及以上
SQLFormat.zip这个压缩包显然包含了用于美化和规范SQL语句格式的工具,名为SQLFix。这个工具主要服务于数据库管理员、开发人员以及任何需要编写或处理大量SQL代码的人群,尤其在Oracle数据库环境下。 1. **SQL语句...
格式化后接近PLSQL格式化效果。
用于Notepad++的插件:sqlFormat 由于官方只提供x86版本的,因此编译个X64的。 用来格式化SQL 语句,支持64位的notepad++ 依赖 VC 2015 x64 runtime
在给定的“sql格式化JS脚本”中,我们看到一个名为`SqlFormat.js`的文件,它提供了在前端环境中对SQL语句进行格式化的功能。 这个JavaScript库`SqlFormat.js`允许前端开发者在用户界面直接处理和格式化SQL查询,...
sqlformat.el 这个Emacs库提供命令和次要模式,以使用外部程序(例如 , 或轻松地重新格式化SQL。 安装 如果选择不使用中的便捷软件包之一,则需要将包含sqlformat.el的目录添加到load-path ,然后(require 'sql...
2. **sqlFormat.cfg**:这可能是一个配置文件,用于存储SQL格式化的具体设置,如缩进样式、换行规则等。用户可以根据自己的需求修改此文件来调整格式化效果。 3. **DBeaver配置方法.doc**:这是一个文档,详细介绍了...
语言:English (United States) 格式化SQL代码 功能: 免费且简单的此扩展格式格式化了您SQL代码。 2.0 *应用程序重新重写 *添加主题光和... 此应用程序使用https://sqlformat.org/团队的API SQL格式。 谢谢所有人!!!
【标题】"sql-format-plugin" 是一款用于Chrome浏览器的SQL语句格式化插件,它的源代码被公开,便于开发者查看、学习和定制。这款插件的主要功能是帮助用户整理和美化在浏览器环境中输入或复制的SQL查询语句,使其更...
在提供的压缩包子文件名称列表中,只有一个文件`SqlFormat.exe`,这很可能是该SQL格式化工具的可执行程序。用户只需运行这个程序,然后将待格式化的SQL语句输入或导入,工具会自动进行格式化处理,并显示或导出格式...
"SQLFORMAT.exe"这个文件很可能是一个可执行程序,用户可以直接运行以格式化SQL语句。使用方法通常包括将SQL语句复制到程序界面,或者通过命令行接口输入文件路径批量处理。这些工具通常支持自定义格式设置,比如...
SQL中的`FORMAT()`函数是一个非常实用的工具,它允许你按照特定的格式来展示数值或日期类型的数据。这个函数在处理报表或者用户界面展示时特别有用,因为它可以帮助你确保数据以用户友好的方式呈现。 `FORMAT()`...
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 总结
mv sqlformat.phar /usr/local/bin/sqlformat 用法 Usage: $basename [--no-format] [--no-highlight] [<sql>] $basename [--no-comment] [--no-highlight] [<sql>] $basename [-c | --compress] [<sql>] $...
c# 把c#中sql代码转换成数据库sql语句,同样也可反转和格式化SQL语句
SQL中的`FORMAT()`函数是一个非常实用的工具,它允许你按照特定的格式来展示数值或日期数据。这个函数尤其在需要以用户友好的方式呈现数据时非常有用。在本篇文章中,我们将深入探讨`FORMAT()`函数的用法,并通过一...
下载之后,直接扔到notepad安装目录的plugin目录里,关闭notepad,重新打开就行了,简单好用
SQL格式化工具,可以批量添加逗号,引号,消除空格符、制表符、回车符
FormatSQL是一款专为数据库管理人员和开发人员设计的实用工具,其主要功能是帮助用户将混乱的SQL代码进行格式化,使其更加整洁、易读。在处理大量SQL脚本时,这款工具能显著提高代码的可维护性和团队协作效率。下面...
一个chrome插件来格式化你的SQL代码。 功能:此扩展程序免费且容易格式化您SQL代码。...此应用程序使用https://sqlformat.org/团队提供的api SQL格式。 谢谢大家! 支持语言:English (United States)