PCDVD數位科技討論區

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)

asccpu 2018-11-01 10:17 AM

引用:
作者stanleywang
我連問題都看不懂 :cry: :cry:

他是指,原本欄位的內容是 "進貨數量:11568,銷售數量:1000"
現在要變成:
欄位1 進貨數量
欄位2 11568
欄位3 銷售數量
欄位4 1000
且資料會增加,也是要轉成上述格式,以方便處理欄位2及欄位4的運算

pcwheat 2018-11-01 10:18 AM

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

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

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

stanleywang 2018-11-01 10:55 AM

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


原來是這樣,當初資料庫為什麼要這樣設計呢?

space 2018-11-01 11:04 AM

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

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

chk 2018-11-01 02:13 PM

引用:
作者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 中加二個"計算資料行"欄位
把上述結果算到這二個欄位去

不過最好還是從原頭改啦
如果真的不會寫...
丟幾筆不重要的資料上來
大家幫你改

osx8 2018-11-01 09:55 PM

感謝各位的熱心回覆,終於解決了 :like:

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

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

寫程式我真的是菜鳥,感謝大家的幫忙。 :) :)


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

vBulletin Version 3.0.1
powered_by_vbulletin 2025。