![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 疑難雜症區
(https://www.pcdvd.com.tw/forumdisplay.php?f=34)
- - 有關字串處理的程式語法請教
(https://www.pcdvd.com.tw/showthread.php?t=1153798)
|
---|
引用:
他是指,原本欄位的內容是 "進貨數量:11568,銷售數量:1000" 現在要變成: 欄位1 進貨數量 欄位2 11568 欄位3 銷售數量 欄位4 1000 且資料會增加,也是要轉成上述格式,以方便處理欄位2及欄位4的運算 |
來猜測一下,樓主問題是
有"一個欄位",其中資料被填入字串,這資料欄位的字串類似這樣 "進貨數量:11568,銷售數量:1000 進貨數量:1568,銷售數量:900" 現今想抓出某欄位來做計算,該怎麼做 以上是我的理解。 解決方式,是寫段程式來做處理, 專門拆解這欄位資料,然後轉存到新的欄位,如"進貨數量"、"銷售數量" 由於看起來像是複數筆數值,建議是另開新資料表來存,計算時候會比較方便。 最後再抓新欄位值來做計算。 問怎麼拆資料?參考一下 #9 chk 的範例,如果資料像範例中那樣不複雜,也能用SQL語法直接處理。 |
1個附加檔案
引用:
原來是這樣,當初資料庫為什麼要這樣設計呢? |
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 中加二個"計算資料行"欄位 把上述結果算到這二個欄位去 不過最好還是從原頭改啦 如果真的不會寫... 丟幾筆不重要的資料上來 大家幫你改 |
感謝各位的熱心回覆,終於解決了 :like:
用空白replace掉中文字之後TRIM掉空白,再用就可以抓到我要的字串了,真是大大感謝!!! 是這樣的,不知道為什麼原有的系統就是這樣把這2個資料寫在同個欄位,然後因為明年要換新系統了,暫時就先另寫個程式把需要的資料抓到別地方去用。 寫程式我真的是菜鳥,感謝大家的幫忙。 :) :) |
所有的時間均為GMT +8。 現在的時間是07:28 PM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2025。