❶ 怎麼用正則表達式解析sql語句
先看要解析的樣例SQL語句:
select * from al
SELECT * frOm al
Select C1,c2 From tb
select c1,c2 from tb
select count(*) from t1
select c1,c2,c3 from t1 where condi1=1
Select c1,c2,c3 From t1 Where condi1=1
select c1,c2,c3 from t1,t2 where condi3=3 or condi4=5 order by o1,o2
Select c1,c2,c3 from t1,t2 Where condi3=3 or condi4=5 Order by o1,o2
select c1,c2,c3 from t1,t2,t3 where condi1=5 and condi6=6 or condi7=7 group by g1,g2
Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2
Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2,g3 order by g2,g3
解析效果之一(isSingleLine=false):
原SQL為select * from al
解析後的SQL為
select
*
from
al
原SQL為SELECT * frOm al
解析後的SQL為
select
*
from
al
原SQL為Select C1,c2 From tb
解析後的SQL為
select
C1,c2
from
tb
原SQL為select c1,c2 from tb
解析後的SQL為
select
c1,c2
from
tb
原SQL為select count(*) from t1
解析後的SQL為
select
count(*)
from
t1
原SQL為select c1,c2,c3 from t1 where condi1=1
解析後的SQL為
select
c1,c2,c3
from
t1
where
condi1=1
原SQL為Select c1,c2,c3 From t1 Where condi1=1
解析後的SQL為
select
c1,c2,c3
from
t1
where
condi1=1
原SQL為select c1,c2,c3 from t1,t2 where condi3=3 or condi4=5 order by o1,o2
解析後的SQL為
select
c1,c2,c3
from
t1,t2
where
condi3=3 or condi4=5
order by
o1,o2
原SQL為Select c1,c2,c3 from t1,t2 Where condi3=3 or condi4=5 Order by o1,o2
解析後的SQL為
select
c1,c2,c3
from
t1,t2
where
condi3=3 or condi4=5
order by
o1,o2
原SQL為select c1,c2,c3 from t1,t2,t3 where condi1=5 and condi6=6 or condi7=7 group by g1,g2
解析後的SQL為
select
c1,c2,c3
from
t1,t2,t3
where
condi1=5 and condi6=6 or condi7=7
group by
g1,g2
原SQL為Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2
解析後的SQL為
select
c1,c2,c3
from
t1,t2,t3
where
condi1=5 and condi6=6 or condi7=7
group by
g1,g2
原SQL為Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2,g3 order by g2,g3
解析後的SQL為
select
c1,c2,c3
from
t1,t2,t3
where
condi1=5 and condi6=6 or condi7=7
group by
g1,g2,g3
order by
g2,g3
解析效果之二(isSingleLine=true):
原SQL為select * from al
解析後的SQL為
select
*
from
al
原SQL為SELECT * frOm al
解析後的SQL為
select
*
from
al
原SQL為Select C1,c2 From tb
解析後的SQL為
select
C1,
c2
from
tb
原SQL為select c1,c2 from tb
解析後的SQL為
select
c1,
c2
from
tb
原SQL為select count(*) from t1
解析後的SQL為
select
count(*)
from
t1
原SQL為select c1,c2,c3 from t1 where condi1=1
解析後的SQL為
select
c1,
c2,
c3
from
t1
where
condi1=1
原SQL為Select c1,c2,c3 From t1 Where condi1=1
解析後的SQL為
select
c1,
c2,
c3
from
t1
where
condi1=1
原SQL為select c1,c2,c3 from t1,t2 where condi3=3 or condi4=5 order by o1,o2
解析後的SQL為
select
c1,
c2,
c3
from
t1,
t2
where
condi3=3 or
condi4=5
order by
o1,
o2
原SQL為Select c1,c2,c3 from t1,t2 Where condi3=3 or condi4=5 Order by o1,o2
解析後的SQL為
select
c1,
c2,
c3
from
t1,
t2
where
condi3=3 or
condi4=5
order by
o1,
o2
原SQL為select c1,c2,c3 from t1,t2,t3 wher www.hnne.com e condi1=5 and condi6=6 or condi7=7 group by g1,g2
解析後的SQL為
select
c1,
c2,
c3
from
t1,
t2,
t3
where
condi1=5 and
condi6=6 or
condi7=7
group by
g1,
g2
原SQL為Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2
解析後的SQL為
select
c1,
c2,
c3
from
t1,
t2,
t3
where
condi1=5 and
condi6=6 or
condi7=7
group by
g1,
g2
原SQL為Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2,g3 order by g2,g3
解析後的SQL為
select
c1,
c2,
c3
from
t1,
t2,
t3
where
condi1=5 and
condi6=6 or
condi7=7
group by
g1,
g2,
g3
order by
g2,
g3
使用的類SqlParser,你可以拷貝下來使用之:
package com.sitinspring.common.sqlFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* SQL語句解析器類
* @author: sitinspring([email protected])
* @date: 2008-3-12
*/
public class SqlParser{
/**
* 逗號
*/
private static final String Comma = ",";
/**
* 四個空格
*/
private static final String FourSpace = " ";
/**
* 是否單行顯示欄位,表,條件的標識量
*/
private static boolean isSingleLine=true;
/**
* 待解析的SQL語句
*/
private String sql;
/**
* SQL中選擇的列
*/
private String cols;
/**
* SQL中查找的表
*/
private String tables;
/**
* 查找條件
*/
private String conditions;
/**
* Group By的欄位
*/
private String groupCols;
/**
* Order by的欄位
*/
private String orderCols;
/**
* 構造函數
* 功能:傳入構造函數,解析成欄位,表,條件等
* @param sql:傳入的SQL語句
*/
public SqlParser(String sql){
this.sql=sql.trim();
❷ notepad++ 怎麼格式化代SQL碼
方法/步驟
1、下載安裝notepad++
2、打開notepad++,選擇「插件」-「Plugin Manager」-「Show Plugin Manager」
3、在「Plugin Manager」中,找到「PoorMansTSqlFormatter」插件並安裝。有時候因為網路問題,會失敗,多嘗試幾次!
4、安裝好插件後,簡單配置下。
5.點擊格式化,看效果
❸ sql formatter怎麼實現的
system("color 0A");
AllSort<int> sort;//定義排序類對象
vector<int> arr; //定義並初始化一個容器,進行數組操作
int len=10; //控制數組長度
char ans='y';
do
❹ 安裝sql2005出現setup exe遇到問題需要關閉我們對此引起的不便表示抱歉如題 謝謝了
一.MSDTC運行帳戶問題 確認MSDTC (Microsoft Distributed Transaction Coordinator)服務正在運行,並且其啟動帳戶是NT AUTHORITY\Network Service」。按照以下步驟來檢查: 1. 點擊「開始」->「運行」->services.msc 2. 在服務列表中找到Distributed Transaction Coordinator,雙擊以編輯其屬性 3. 在屬性窗口切換至登錄選項卡,確認其啟動帳號為」NT AUTHORITY\Network Service」(密碼為空即可) 4. 啟動DTC服務再嘗試安裝SQL Server 2005 結果:這個步驟我已經嘗試過,不是這個問題。 二.分析SQL Server 2005安裝日誌 將C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\目錄下所有的文件( 包括Summary.txt和Files子目錄下的所有文件) 發送給微軟技術支持工程師進行分析。 結果:這個步驟我沒有做過,不過微軟工程師好像也沒有發現線索。 三.COPY安裝程序到硬碟安裝嘗試 建立D:\SQLServer2005 文件夾, 創建以下兩個子文件夾:Servers和Tools。 Serviers文件夾拷貝SQL Server2005的第一張安裝盤,包含所有要安裝主 SQL Server 2005 組件。 Tools文件夾拷貝SQL Server 2005的第二張盤,包含為 SQL Server 2005 聯機叢書和工具組件。運行D:\SQLServer2005\ Servers 文件夾下的Setup.exe,啟動 SQL Server 2005 安裝程序。 結果:以上方式安裝過程中還是碰到同樣的問題。 四.重新安裝 COM+應用程序 1.從控制面板的「添加或刪除程序」中,單擊「添加/刪除 Windows 組件」。 2.在「Windows 組件向導」中,不對選擇做任何更改,單擊「下一步」。 一直單擊以完成向導,然後再次運行 SQL Server 2005 安裝程序。 結果:問題沒有解決。 通過以上分析微軟的工程師總結如下: 目前還不確定引起這個錯誤的原因, 並且在安裝日誌中也沒有找到更多的有用信息。 可能引起此類錯誤的原因有以下幾種: 1. COM+的配置問題。 2. 帳號許可權問題。 3.有一些安裝失敗的Microsoft.SqlServer. MSMQTask.dll情況出現在測試版中, 或者是由於未完全刪除的測試版組件而導致安裝失敗。 4. 除此之外還有一些類似的問題都是與64位操作系統或者Clust er環境有關。 我認為以上的一些原因可以排除,看來又是Live Meeting的時候了,和微軟工程師約定時間聯機查找問題。 五.手工注冊Microsoft.SqlServer. MSMQTask.dll 使用 regsvcs.exe應用程序工具注冊.NET 服務 使用cmd執行過程如下: C:\WINDOWS\Microsoft.NET\ Framework\v2.0.50727>regsvcs. exe "C:\Program Files\Micr osoft SQL Server\90\DTS\Tasks\Microsoft. SqlServer.MSMQTask.dll" Microsoft(R) .NET Framework 服務安裝實用工具版本 2.0.50727.42 Copyright (c) Microsoft Corporation. All rights reserved. 出現下列安裝錯誤: 1: 要執行此任務,您必須具有管理憑據。 請與您的系統管理員聯系以獲得幫助。 2: 注冊程序集「Microsoft.SqlServer. MSMQTask, Version=9.0.242.0, Culture=neutral, PublicKeyToken= 89845dcd8080cc91」失敗。 3: 對注冊表項「HKEY_CLASSES_ROOT\ Microsoft.SqlServer.Dts.Tasks. MessageQueueTask. DataFileMessage」的訪問被拒絕。 分析結果: 這看起來是由於當前Windows用戶在該注冊表鍵值上沒有足夠 的許可權造成的。經過研究類似案例,在某些情況下, 即使是Administrators組的用戶也可能出現對這些鍵 值沒有Full Control的情況。需要確認一下在這些注冊表值上, Administrators組用戶是否有Full Control。在注冊表中右鍵點擊注冊表值-> 選擇許可權來查看及改變該值上的許可權設置。 如果許可權設置都正確的話,可以試著抓一個RegMon trace來看到底是不是注冊表鍵值的許可權問題導致這個錯誤。 看來問題終於找到了。 六.監控注冊表 1. 運行RegMon工具,通過菜單Options-> Filter中設置Include list,把Regsvcs.exe加入Include list中。 2. 執行regsvcs.exe "C:\Program Files\Microsoft SQL Server\90\DTS\Tasks\Microsoft. SqlServer.MSMQTask.dll" 3. 在Regsvcs.exe執行失敗停止後, 保存RegMon生成的log。 分析RegMon Trace。定位問題如下: 5484 17.98829079 RegSvcs.exe:3404 OpenKey HKCR\Microsoft.SqlServer.Dts. Tasks.MessageQueueTask. MessageQueueTask ACCESS DENIED NBCN-ZZ\Administrator 5488 17.98927116 RegSvcs.exe:3404 CreateKey HKCR\Microsoft.SqlServer.Dts. Tasks.MessageQueueTask. MessageQueueTask ACCESS DENIED NBCN-ZZ\Administrator 5489 17.98955727 RegSvcs.exe:3404 CreateKey HKCR\Microsoft.SqlServer.Dts. Tasks.MessageQueueTask. MessageQueueTask ACCESS DENIED NBCN-ZZ\Administrator 6431 19.89454460 RegSvcs.exe:3404 OpenKey HKCR\Microsoft.SqlServer.Dts. Tasks.MessageQueueTask. MessageQueueTask ACCESS DENIED NBCN-ZZ\Administrator 以上其實就是我一開始使用RegMon 時應該發現的問題,結果到現在才發現。 從這幾條記錄來看,問題是對注冊表值HKCR\ Microsoft.SqlServer.Dts.Tasks. MessageQueueTask. MessageQueueTask的許可權問題。 而RegSvcs進程在遇到這些許可權問題之後,並沒有馬上終止, 還有一些別的注冊表活動。我查看了注冊表HKEY_ CLASSES_ROOT\Microsoft. SqlServer.Dts.Tasks. MessageQueueTask. DataFileMessage項的許可權, Administrators組沒有「完全控制」和「讀取」 許可權,對其進行授權。重新運行注冊, 結果又報另外的注冊表項沒有許可權,對其進行添加,直到注冊成功, 以下是輸出結果。 C:\WINDOWS\Microsoft.NET\ Framework\v2.0.50727>regsvcs. exe "C:\Program Files\Micr osoft SQL Server\90\DTS\Tasks\Microsoft. SqlServer.MSMQTask.dll" Microsoft(R) .NET Framework 服務安裝實用工具版本 2.0.50727.42 Copyright (c) Microsoft Corporation. All rights reserved. 正在自動將「Microsoft.SqlServer. ManagedDTS, Version=9.0.242.0, Culture=neutral, PublicKeyToken= 89845dcd8080cc91」導出為「C:\ WINDOWS\assembly\GAC_MSIL\ Microsoft. SqlServer.ManagedDTS\9.0.242. 0__89845dcd8080cc91\Microsoft. SqlServer.ManagedDTS. tlb」。 警告: 程序集未聲明 ApplicationAccessControl 屬性。默認情況下啟用應用程序安全性。 已安裝的程序集: 程序集: C:\Program Files\Microsoft SQL Server\90\DTS\Tasks\Microsoft. Sql Server.MSMQTask.dll 應用程序: Microsoft.SqlServer.MSMQTask TypeLib: C:\Program Files\Microsoft SQL Server\90\DTS\Tasks\Microsoft. Sq lServer.MSMQTask.tlb C:\WINDOWS\Microsoft.NET\ Framework\v2.0.50727> 修改授權的相關注冊表項如下: HKEY_CLASSES_ROOT\Microsoft. SqlServer.Dts.Tasks. MessageQueueTask. MessageQueueTask HKEY_CLASSES_ROOT\Microsoft. SqlServer.Dts.Tasks. MessageQueueTask. EncryptionAlgorithmWrapper HKEY_CLASSES_ROOT\Microsoft. SqlServer.Dts.Tasks. MessageQueueTask. ServCompMQTask HKEY_CLASSES_ROOT\Microsoft. SqlServer.Dts.Tasks. MessageQueueTask.Formatter 再次運行「dcomcnfg」,打開系統組件服務。 展開控制台根目錄->組件服務->計算機->我的電腦-> COM+應用程序節點,發現Microsoft. SqlServer.MSMQTask節點,該COM+ 服務已經安裝成功。
❺ Poor Man's T-SQL Formatter如何在sublime中使用
Poor Man's T-SQL Formatter。該工具用於格式化SQL語句,具有簡單、強大、免費的特點,該工具一般是作為SSMS、Notepad++ 、VS Code 等SQL編輯器的插件安裝使用。當SQL語句中含有中文的時,UTF8編碼的SQL格式化時會報錯或亂碼,解決辦法是:將編碼 轉為ANSI即可。修改配置項,修改內容為:
"php_path": "Data\\CodeFormatter\\php\\php.exe",
php_path是php.exe文件路徑,路徑可以是相對路徑當然也可以是絕對路徑,用相對路徑是為了在配置好sublime後將其整個文件夾打包帶走在其他電腦直接使用無需再次配置。
❻ 如何採用element-plus,基於codemirror6實現sql在線編輯器
js在線sql編輯器,下載後導入IDE工具中,在瀏覽器訪問sql-editor-master/index.html ,效果如下(含括弧高亮顯示、顯示折疊欄):
codeMirror官網https://codemirror.net/, 官網js/css資源文件,也可自行去官網下載,但是官網比較慢,需引入的核心頁面代碼:
<link rel="stylesheet" href="css/codemirror.css" />
<link rel="stylesheet" href="test/addon/fold/foldgutter.css">
<link rel="stylesheet" href="css/theme/dracula.css" />
<link rel="stylesheet" href="css/show-hint.css" />
<link rel="stylesheet" href="js/jquery-easyui/themes/default/easyui.css">
<link rel="stylesheet" href="js/layui/css/layui.css">
<link rel="stylesheet" href="css/index.css" />
<script type="text/javascript">var baseUrl ="";</script>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery-easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="js/jquery-easyui/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="js/editor/codemirror.js"></script>
<!-- 折疊欄顯示 -->
<script type="text/javascript" src="test/addon/fold/foldcode.js"></script>
<script type="text/javascript" src="test/addon/fold/foldgutter.js"></script>
<script type="text/javascript" src="test/addon/fold/comment-fold.js"></script>
<!-- 括弧高亮匹配 -->
<script type="text/javascript" src="test/addon/fold/matchbrackets.js"></script>
<script type="text/javascript" src="js/editor/sublime.js"></script>
<script type="text/javascript" src="js/editor/sql.js"></script>
<script type="text/javascript" src="js/editor/sql-hint.js"></script>
<script type="text/javascript" src="js/editor/show-hint.js"></script>
<!-- sql格式 -->
<script type="text/javascript" src="js/editor/formatting.js"></script>
<script type="text/javascript" src="js/editor/sql-formatter.min.js"></script>
<script type="text/javascript" src="js/layui/layui.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<textarea id="code"></textarea>
核心js代碼:
//根據DOM元素的id構造出一個編輯器
var editor=CodeMirror.fromTextArea(document.getElementById("code"),{
mode:"text/c-mysql", //實現Java代碼高亮
lineNumbers:true,
matchBrackets: true, //括弧高亮匹配
theme:"default",
keyMap: "default",
extraKeys:{"Tab":"autocomplete"},
hint: CodeMirror.hint.sql,
lineWrapping: true, //是否換行
foldGutter: true, //是否折疊
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"], //添加行號欄,折疊欄
hintOptions: {
tables: tablewords
}
});
輸入關鍵詞提示等信息的配置:allWords.json
動態設置表欄位等信息:
let tableWords = {"al": []};
let tableName = "tn_user";
tableWords[tableName].push("userId");
editor.setOption("hintOptions", {"tables": tableWords});
tableWords json格式如下:
"tableWords": {
"cp_sku": [
"skuid",
"cpbh",
"tcbh"
],
"user_info": [
"user_id",
"user_token",
"user_name",
"user_type",
"password"
]
}
❼ sql select TRdate日期列 from table1 這個搜索出來的結果 是 YY-MM-DD hhmmss
Select Convert(varchar(30),TRdate,111) date1 from table1
解釋如下
Convert(varchar(30),TRdate,111) ,
第一個char型類型,第二個參數時間列名,111是時間格式編號。
你想要哪種格式都可在下表找到對應的編號就行
Style(4位表示年份) 輸入輸出格式
100 mon dd yyyy hh:miAM(或PM)
101 mm/dd/yy
102 yymmdd
103 dd/mm/yy
104 ddmmyy
105 ddmmyy
106 dd mon yy
107 mon dd,yy
108 hh:mm:ss
109 mon dd yyyy hh:mi:ss:mmmmAM(或PM)
110 mmddyy
111 yy/mm/dd
112 yymmdd
113 dd mon yyyy hh:mi:ss:mmm(24小時制)
114 hh:mi:ss:mmm(24小時制)
120 yyyymmdd hh:mi:ss(24小時制)
121 yyyymmdd hh:mi:ss:mmm(24小時制)
❽ 從字元串轉換日期和/或時間時,轉換失敗
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date mytime=formatter.parse(要轉換的時間格式必須和format一致);
❾ SQL 怎麼查詢每個人的第一條數據
select
mid ,content
from(
SELECT
mid ,content,
rank() over(ORDER BY content) as rank1
FROM tb_record) a
where a.rank1=1
❿ NotePad++中SQL語句分析插件嗎
方法/步驟
下載安裝notepad++