PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 疑難雜症區
帳戶
密碼
 

  回應
 
主題工具
asccpu
Master Member
 

加入日期: Jan 2002
您的住址: U.S.S AGC
文章: 1,667
引用:
作者stanleywang
我連問題都看不懂

他是指,原本欄位的內容是 "進貨數量:11568,銷售數量:1000"
現在要變成:
欄位1 進貨數量
欄位2 11568
欄位3 銷售數量
欄位4 1000
且資料會增加,也是要轉成上述格式,以方便處理欄位2及欄位4的運算
     
      
__________________
辭源數位化計劃啟始於2014年1月。請拜訪成果。
舊 2018-11-01, 10:17 AM #11
回應時引用此文章
asccpu離線中  
pcwheat
Major Member
 

加入日期: Feb 2006
文章: 207
來猜測一下,樓主問題是
有"一個欄位",其中資料被填入字串,這資料欄位的字串類似這樣
"進貨數量:11568,銷售數量:1000
進貨數量:1568,銷售數量:900"
現今想抓出某欄位來做計算,該怎麼做
以上是我的理解。

解決方式,是寫段程式來做處理,
專門拆解這欄位資料,然後轉存到新的欄位,如"進貨數量"、"銷售數量"
由於看起來像是複數筆數值,建議是另開新資料表來存,計算時候會比較方便。
最後再抓新欄位值來做計算。

問怎麼拆資料?參考一下 #9 chk 的範例,如果資料像範例中那樣不複雜,也能用SQL語法直接處理。
 

此文章於 2018-11-01 10:20 AM 被 pcwheat 編輯.
舊 2018-11-01, 10:18 AM #12
回應時引用此文章
pcwheat離線中  
stanleywang
Amateur Member
 

加入日期: Oct 2017
文章: 38
引用:
作者asccpu
他是指,原本欄位的內容是 "進貨數量:11568,銷售數量:1000"
現在要變成:
欄位1 進貨數量
欄位2 11568
欄位3 銷售數量
欄位4 1000
且資料會增加,也是要轉成上述格式,以方便處理欄位2及欄位4的運算


原來是這樣,當初資料庫為什麼要這樣設計呢?
上傳的圖像
文件類型: png aa.png (31.9 KB, 113次瀏覽)
舊 2018-11-01, 10:55 AM #13
回應時引用此文章
stanleywang離線中  
space
Junior Member
 

加入日期: Apr 2003
文章: 730
1.先用SUBSTRING跟 CHARINDEX分割字串(你的例子:引數使用","逗號)
https://social.msdn.microsoft.com/F...38988?forum=240

2.
再搭配前面chk網友教的使用REPLACE
空白替換掉"進貨數量:"、"銷售數量:"


假設你要取的資料
資料庫為test
資料表為test1
欄位為total

SELECT [total]
,REPLACE(SUBSTRING([total], 1, CHARINDEX(',', [total]) - 1),'進貨數量:','')
,REPLACE(SUBSTRING([total], CHARINDEX(',', [total]) + 1, LEN([total]) - CHARINDEX(',', [total]),'銷貨數量:','')
FROM test.dbo.test1 where XXX=XXX

---------------------------------------------------
兩邊隨便鬥起來的,不知道能不能跑
舊 2018-11-01, 11:04 AM #14
回應時引用此文章
space離線中  
chk
Golden Member
 
chk的大頭照
 

加入日期: Apr 2001
您的住址: 雞窩
文章: 2,820
引用:
作者space
1.先用SUBSTRING跟 CHARINDEX分割字串(你的例子:引數使用","逗號)
https://social.msdn.microsoft.com/F...38988?forum=240

2.
再搭配前面chk網友教的使用REPLACE
空白替換掉"進貨數量:"、"銷售數量:"


假設你要取的資料
資料庫為test
資料表為test1
欄位為total

SELECT [total]
,REPLACE(SUBSTRING([total], 1, CHARINDEX(',', [total]) - 1),'進貨數量:','')
,REPLACE(SUBSTRING([total], CHARINDEX(',', [total]) + 1, LEN([total]) - CHARINDEX(',', [total]),'銷貨數量:','')
FROM test.dbo.test1 where XXX=XXX

---------------------------------------------------
兩邊隨便鬥起來的,不知道能不能跑



應該可以
我早上以為欄位只有 進貨數量:XXXXX 原來後面還有 銷售數量
反正如果 "銷售數量:" "進貨數量:" 這幾個字不會變的話
其實都好處理
如果是我..(MSSQL)
建議在table 中加二個"計算資料行"欄位
把上述結果算到這二個欄位去

不過最好還是從原頭改啦
如果真的不會寫...
丟幾筆不重要的資料上來
大家幫你改
舊 2018-11-01, 02:13 PM #15
回應時引用此文章
chk離線中  
osx8
Basic Member
 

加入日期: Dec 2006
文章: 26
感謝各位的熱心回覆,終於解決了

用空白replace掉中文字之後TRIM掉空白,再用就可以抓到我要的字串了,真是大大感謝!!!

是這樣的,不知道為什麼原有的系統就是這樣把這2個資料寫在同個欄位,然後因為明年要換新系統了,暫時就先另寫個程式把需要的資料抓到別地方去用。

寫程式我真的是菜鳥,感謝大家的幫忙。
舊 2018-11-01, 09:55 PM #16
回應時引用此文章
osx8離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是03:14 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2024。