1
我想獲得一個SQL查詢來獲取圖像數據類型列中的多個值。數據庫看起來如下圖所示:如何從圖像數據類型列中獲取多個值?
DB結構
Column | DataType
PN | varchar(50)
Data | image
DB實施例
PN | Data
A | Data1
B | Data2
每個「數據」 DB列的數據源是.txt文件看起來像這樣:
<FILE FROM DATA1>
HEADER1 : header1
HEADER2 : header2
HEADER3 : header3
HEADER4 : header4
ATTRIBUTE1 : ABC
ATTRIBUTE2 : %%%
ATTRIBUTE3 : %%%
ATTRIBUTE4 : %%%
ATTRIBUTE5 : %%%
ATTRIBUTE1 : DDD
ATTRIBUTE2 : %%%
ATTRIBUTE3 : %%%
ATTRIBUTE4 : %%%
ATTRIBUTE5 : %%%
ATTRIBUTE1 : FFF
ATTRIBUTE2 : %%%
ATTRIBUTE3 : %%%
ATTRIBUTE4 : %%%
ATTRIBUTE5 : %%%
<FILE FROM DATA2>
HEADER1 : headerA
HEADER2 : headerb
HEADER3 : headerc
HEADER4 : headerd
ATTRIBUTE1 : dsf
ATTRIBUTE2 : %%%
ATTRIBUTE3 : %%%
ATTRIBUTE4 : %%%
ATTRIBUTE5 : %%%
ATTRIBUTE1 : ert
ATTRIBUTE2 : %%%
ATTRIBUTE3 : %%%
ATTRIBUTE4 : %%%
ATTRIBUTE5 : %%%
'ATTRIBUTEs1-5' 可被存儲在 每個.txt文件(或在Data [image]行)至少一次和最多約20次。
所需的輸出看起來:
@imageToVarchar = CONVERT(varchar(MAX), CONVERT(varbinary(MAX), Data));
我數ATT1的數目:
PN | Attributes --Comments
A | ABC --Att1 coming out from Data1
A | DDD --Att1 coming out from Data1
A | FFF --Att1 coming out from Data1
B | dsf --Att1 coming out from Data2
B | ert --Att1 coming out from Data2
我通過使用下面的語句轉換圖像數據類型到varchar
通過以下表達式在文件中找到:
@amountOfPNsAtFile = (datalength(@imageToVarchar) - datalength(replace(cast(@imageToVarchar as varchar(max)), 'ATTRIBUTE1 :', '')))/LEN('ATTRIBUTE1 :');
我很努力讓所有'ATTRIBUTE1存儲在一個文件中。我可以通過以下語句獲得第一個'ATTRIBUTE1':
@att1 = SUBSTRING(@imageToVarchar, CHARINDEX ('ATTRIBUTE1', @imageToVarchar) + LEN('ATTRIBUTE1 :') + 1, CHARINDEX ('ATTRIBUTE2', @imageToVarchar) - CHARINDEX ('ATTRIBUTE1', @imageToVarchar)- LEN('ATTRIBUTE2 :') - 3);
有關如何獲取其餘Att1的任何想法?
在此先感謝!