當前位置:首頁 » 編程語言 » sql拆解
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql拆解

發布時間: 2022-04-27 03:02:36

1. sql中怎麼把字元串根據逗號拆分

IF(OBJECT_ID('TA') IS NOT NULL) DROP TABLE TA
CREATE TABLE TA(id INT,[value] VARCHAR(100), class VARCHAR(10))
INSERT INTO TA(id,[value],class)
SELECT 1,'3,2,4,5','no' UNION ALL
SELECT 2,'5,1,1+2','yes'
--查詢結果
SELECT T.id
,SUBSTRING(T.[value],R.number,CHARINDEX(',',T.[value]+',',R.number)-R.number) AS value
,T.class
,ROW_NUMBER() OVER (PARTITION BY T.id ORDER BY T.id) AS code
FROM TA AS T
JOIN (
SELECT TOP 10 number FROM [master].dbo.spt_values
WHERE [type]='P' ORDER BY number)AS R ON (CHARINDEX(',',','+T.[value],R.number)=R.number)

2. SQL語句怎麼實現

標題1
姓名1
班級1

你一條記錄的三個內容是靠什麼分隔的,換行符還是空格,還是不確定?
如果是換行符或者空格的個數是一定的話可以用instr函數來弄,如果不確定的話就不好弄了

3. 誰能幫忙寫出這個SQL腳本,需要判斷拆解原數據的日期或份數,得出結果。能解決再加分! 詳細內容如下:

結果表中投遞是怎麼取的 還有 份數為1 的幾條數據的時間怎麼取的 都和上表不一樣
如果一樣的話用遞歸就能做出來

4. 資料庫SQL Server 問題求助

1、首先,這條sql 使用了(not exists),這條sql思路大體是這樣的:
某個order,取名為R, 如果10308這個order下某個訂單商品不在R訂單下的訂單商品中,那麼R這個order就不符合條件;
2、sql拆解分析:首先明確not exists 的意思是:其後沒有數據返回,那麼被select的數據才被加入到結果集中;
1)第一個not exists 和第二個not exists之間的sql:
"select 1 from OrderItems」 a where a.OrderID=10308"
這個查詢的意思是:查詢出訂單為10308的所有訂單商品;其後面的not exists就是對這個結果集的過濾;
2)第二個not exists 後面的sql:
"select 1 from OrderItems b where p.OrderID=b.OrderID and a.ProceID=b.ProctID"
這個查詢的意思是:10308這個訂單的訂單商品是否存在與p這個訂單中的訂單商品中;
3)將前兩步中的sql結合起來:
「select 1 from OrderItems a where a.OrderID=10308
and not exists
(select 1 from OrderItems b where p.OrderID=b.OrderID and a.ProceID=b.ProceID)」
這個sql的意思是:在10308這個訂單的所有訂單商品中,是否存在某個商品不再p訂單的訂單商品中;
4)最後對Orders的篩選sql:
「select * from orders p where not exists (第三步的查詢結果)」
第三步中,如果存在那種情況,那麼 第三步返回的數據是1,所以這條order就被過濾掉了,不會添加到結果集中;
如果存在那種情況,那麼 第三步沒有返回數據,所以這條order就會添加到結果集中;
*能力有限,只能講到這種程度,如有不妥之處,海涵、見諒,兄弟;歡迎指正!

5. sql語句太長,能否拆開執行

簡單的回答,到目前為止,沒有能支持SQL語句拼接的資料庫管理軟體,也應該沒這個必要。

下面是一些常識,有耐心可以看一下。

1、原則上,MS SQL SERVER對SQL條件語句的長度不作限制,起碼當前沒有人有實際的單條語句沒法執行完成的報道,應該幾千個字元以內的單條SQL語句都能正常的在MS SQL附帶的「SQL Server Management Studio」或「企業管理器」中執行,要不,你試試,也許你就是第一個發現問題的人。
2、如果是編程,使用某些編程軟體向SQL Server發送SQL語句的話,受限於編程環境下,字元串的長度或別的因素,可能會有某些不同,如果是那樣的話,最常見的做法是將多條SQL語句做成存儲過程,放在SQL Server資料庫中,程序只需要發送初始條件進行存儲過程的調用即可。
3、也就是說,復雜的SQL語句,絕大多數專業工程人員一般都不會用通過客戶端直接發向SQL 伺服器的方式去執行。如果只是臨時的要進行一些SQL資料庫的操作,也可以直接在SQL相應的管理工具中做。

6. 誰能幫我拆開這句SQL語句呢

可以說已經沒法猜了,在通過變數拆會更不易看懂。這個sql其實就是套用使用其他的sql執行結果而已,你可以怎麼理解
set rs=conn.execute("select *,aaaa as children, bbbb as parent from tree T where pid="$id);

其中aaaa為tree表中pid=T.id的記錄總數
bbbb為tree表中id="&id&"的記錄的pid的值

7. 一個Java項目。在sql里,我將一個case when 語句拆解成數個select 然後union all之後,頁面上就報

格式說明符沒有相應的參數,或者參數索引引用了不存在的參數

8. sql查詢里 怎麼拆分字元串(按「/」拆分)

先建立一個自定義函數,之個函數非常有用,建議收入自已的資料庫
CREATE FUNCTION mysplit--將以某分隔符分段的字串,按指定的順序號提取子串:

(@strnvarchar(2000),--源字串
@snint,--提取序號
@Delivarchar(1)--分隔符
)
RETURNSvarchar(100)
AS
BEGIN
declare@firstint,@lastint,@resultvarchar(1000),@sn0int
select@sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,1)
while@sn0!=@sn
begin
select@sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
end
if@last-@first-1<0
set@result=''
else
SET@RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)
RETURN(@RESULT)
END

查詢方法:

DECLARE@AVARCHAR(100),@BVARCHAR(100),@CVARCHAR(100)
SELECT
@A=DBO.MYSPLIT('A|B|C',1,'|'),
@B=DBO.MYSPLIT('A|B|C',2,'|'),
@C=DBO.MYSPLIT('A|B|C',3,'|')
SELECT@A,@B,@C

9. PL/SQL 拆解字元串語句

我提供一個拆分字元串的通用函數給你,你再寫這種SQL:
1、先建立一個包,定義數組類型:
CREATE OR REPLACE PACKAGE pkg_string is

-- Purpose : 字元串處理

-- Public type declarations
TYPE StringArray IS VARRAY(2000) OF VARCHAR2(2000);

END pkg_string;

2、拆分字元串的通用函數:
CREATE OR REPLACE FUNCTION fun_ParseToArray(
a_SourceString IN VARCHAR2, --源字元串
a_Delimiter IN VARCHAR2 --拆分的分隔符
) RETURN pkg_string.StringArray IS
-- ********************************************************
-- 根據分隔符拆分字元串為數組
-- ********************************************************
v_Result pkg_string.StringArray; --數組
iCount INTEGER;
iBegin INTEGER;
sValue VARCHAR2(2000);
sSplitString VARCHAR2(2000);
BEGIN
--檢查參數
IF a_SourceString IS NULL OR a_Delimiter IS NULL THEN
RETURN(v_Result);
END IF;
IF a_SourceString = '' THEN
RETURN(v_Result);
END IF;
--初始化數組
v_Result := pkg_string.StringArray();
--Only one entry was found
IF instr(a_SourceString,a_Delimiter) = 0 THEN
-- 數組加1維
v_Result.extend();
-- 將數據存入數組
v_Result(1) := a_SourceString;
RETURN(v_Result);
END IF;
iCount := 0;
sSplitString := a_SourceString;
LOOP
iBegin := INSTR(sSplitString,a_Delimiter);
EXIT WHEN iBegin < 1;
sValue := Substr(sSplitString,1,iBegin - 1);
sSplitString := SubStr(sSplitString,iBegin + 1);
-- 計數器加1
iCount := iCount + 1;
-- 數組加1維
v_Result.extend();
-- 將數據存入數組
v_Result(iCount) := sValue;
END LOOP;
--Set last entry
sSplitString := SubStr(sSplitString, iBegin);

--Update array and counter if necessary
IF Length(sSplitString) > 0 THEN
-- 計數器加1
iCount := iCount + 1;
-- 數組加1維
v_Result.extend();
-- 將數據存入數組
v_Result(iCount) := sSplitString;
END IF;

RETURN(v_Result);
EXCEPTION
WHEN others THEN
return v_Result ;
END fun_ParseToArray;

3、組成SQL
...
vs_row pkg_string.StringArray;
vs_column pkg_string.StringArray;
...
vs_row := fun_ParseToArray(你的一列數據,'#');
--再用for循環拆分vs_row的列:
vs_column(j) := fun_ParseToArray(vs_row(i),'|');
再把拆分出來的數據入表

10. Excel 2010 SQL完全應用的閱讀指南

本書共包括11章,涉及了SQL在Excel中應用的各個方面。其中,第1章為基礎入門,第2至7章為SQL的語言結構應用的疑難問題及解決方案,第8章為子查詢,第9章為SQL與數據透視表組合的應用,第10章為SQL與VBA的組合應用。各章根據所涉及知識點的不同,精心設計了數十個案例,並為讀者准備了相應的思考題和練習題。第11章為綜合應用,講述了運用SQL解決報表分析及構建綜合查詢系統的思路及方法。
各章節的內容簡介如下:
第1章 SQL基礎入門
本章主要介紹Excel下的SQL操作環境、SQL語句的基礎概念以及SQL查詢入門,引導讀者學習及掌握Excel中的SQL語言的運用,並且能編寫出最基本的SQL語句。
第2章 SQL運算符使用
本章主要介紹Excel SQL中比較運算符、邏輯運算符、連接運算符和算術運算符的使用方法,引導讀者在進行SQL查詢時隨心所欲地根據單個或多個條件找出所需要的特定數據。
第3章 SQL常見函數使用
本章主要介紹SQL查詢中可能用到的基本函數,主要涉及到字元串函數、算術函數、轉換函數及其他函數,幫助讀者進一步加深對SQL語句的認識並可運用SQL基本函數解決一些實際工作中遇到的問題。
第4章 SQL日期和時間函數使用
本章主要介紹SQL中日期和時間函數的使用,熟練掌握日期和時間函數的使用,可以方便地按月、年匯總和查詢,還可以查詢和匯總某特殊時間段的數據,或者可以獲取某些特殊的日期。
第5章 SQL排序查詢
本章主要介紹SQL排序查詢,利用排序查詢的技巧可以實現數據的順序排列,也可以找出指定位置的記錄,得到記錄的排名等。
第6章 聚合函數與分組統計
本章主要介紹Excel中數據求和、計數、求均值、GROUP BY分組統計等方面的知識,解答用戶在工作中最常見的SQL疑難問題,引導讀者輕松掌握SQL的統計匯總技術。
第7章 連接查詢
本章主要討論內連接、外連接、交叉連接及自連接等方面的疑難問題,引導用戶輕松地掌握SQL中最常見的多表連接方面的知識。
第8章 子查詢
本章通過對簡單子查詢、復雜子查詢等經典案例的講解,幫助讀者深入了解子查詢的知識。
第9章 SQL與數據透視表
本章首先介紹數據透視表的一些常用的操作,讓用戶對數據透視表有了初步的印象,然後通過相關例子來介紹SQL與數據透視表在日常工作中的應用,向用戶展示雙劍結合的威力。
第10章 SQL和VBA
本章大部分示例以Access作為資料庫,來展示Excel如何通過VBA來利用SQL語句進行數據查詢、修改等批量處理。
第11章 綜合應用
本章通過對日常工作中的報表分析案例、SQL綜合查詢通用系統的分模塊設計案例的講解,將各章中常遇到的技巧進行組合,為讀者在日常工作中遇到的實際問題進行分析拆解、逐步實現所需要的效果,讓SQL語言真正應用到工作中去。
本書約定
為了熟悉本書對滑鼠操作、鍵盤指令等描述方式,從而更順暢地閱讀本書,您有必要了解以下內容:
 菜單
本書中表示連續多個菜單指令時,使用右箭頭「→」進行連接,例如:單擊「文件」選項卡→「選項」→「公式」,表示依次單擊「文件」選項卡的「選項」按鈕,在彈出的「Excel 選項」對話框中單擊「公式」選項卡。
 滑鼠
本書中表示滑鼠操作時,均使用標準的表示方法。其中「指向」表示將滑鼠指針移到對象之上,且不單擊任何按鈕;而「單擊」特指利用滑鼠左鍵單擊目標;「右鍵單擊」表示利用滑鼠的右鍵單擊對象;「雙擊」表示快速按下滑鼠左鍵兩次;「拖放」則表示按下滑鼠左鍵不松開的狀態下拖動滑鼠,拖到目標區域後再放開滑鼠左鍵。
 鍵盤
本書中表示按鍵時使用尖括弧「【】」號包含,例如「按【Ctrl+Shift+Enter】組合鍵」表示同時按下鍵盤上的Ctrl鍵、Shift鍵和Enter鍵。其他按鍵的表示方法相同,如果需要特殊操作方法,會在相關內容中詳細說明。
 代碼
本書的SQL代碼全部使用大寫,例如:SELECT SUM(銷售量) AS 總銷售量,SUM(銷售額) AS 總銷售額FROM [空調銷售表$]。在講解SQL語法時,參數盡量使用小寫,例如VAR (expr)。
本書特點
本書為市場上第一本在Excel中完全應用SQL語言的Excel書籍,文體結構新穎,案例貼近實際,講解深入透徹,表現為以下幾個方面:
 場景式提問
本書從成千上萬網友提問中精心歸納、提煉出各類問題,並還原為貼近真實的求助語言及案例,方便讀者搜尋與實際工作相似問題。
 增強式目錄
本書總體章節劃分以「基礎理論→分類應用→綜合實戰」為主線,將VBA的主要知識點和經典解決方案設計到每個疑難的案例中,並採用「疑難」加「知識點」的特色目錄索引,方便讀者根據需要翻閱和查找。
 開創式結構
本書案例中的「解決方案」環節是對問題的思路解說,結合「操作方法」環節中的步驟讓人更容易理解。「原理分析」環節則主要解釋所使用代碼的工作原理。「知識擴展」環節包括與案例相關的知識點補充,可拓展讀者的視野,同時也有利於理解案例本身的解決思路。
學習方法
本書旨在讓讀者掌握運用SQL語句的基本操作、方法和技巧,用以解決實際工作中的疑難問題,以及對同類的問題提供解決思路。
書中各章節按由易到難的方式組織,但章節之間是相互獨立的,可以從任意章節開始學習,不需要遵循由前至後的順序閱讀。
本書配套有示例文件光碟,讀者必須把光碟的文件放置在D盤,然後邊看書邊操作,只有通過實踐和不斷嘗試,才能真正地掌握和靈活地運用本書中的SQL語句的知識,也許可以寫出比本書作者更好的SQL語句。