在此說明如何直接捨棄右方空白後之字串,由於可能會有1或2個空白,需由左至右找到1st空白,然後去尾。
Bloomberg代碼(以APPLE為例: AAPL US EQUITY)會額外註記商品類型,如EQUITY、COMDTY、INDEX...等等;當資料儲存或顯示同類型商品時則有重覆現象,而欲將代尾端之商品類型剔除,當然可使用多組REPLACE函數執行置換成空白,但會造成SQL極為繁雜,多種商品類型時不建議使用,SQL如下:
Bloomberg代碼(以APPLE為例: AAPL US EQUITY)會額外註記商品類型,如EQUITY、COMDTY、INDEX...等等;當資料儲存或顯示同類型商品時則有重覆現象,而欲將代尾端之商品類型剔除,當然可使用多組REPLACE函數執行置換成空白,但會造成SQL極為繁雜,多種商品類型時不建議使用,SQL如下:
DB
|
SQL
|
ORACLE
|
SELECT COLUMN_VALUE
, SUBSTR(COLUMN_VALUE, 1, INSTR(COLUMN_VALUE, ' ',-1, 1)-1) BBG
FROM TABLE(SYS.DBMS_DEBUG_VC2COLL('AAPL US EQUITY'
, 'Z M3 INDEX', 'FVH4 COMDTY'));
可使用INSTR使用負值,代表由右至左,即可。
|
MSSQL
|
SELECT Ticker
, LEFT(Ticker
, LEN(Ticker)-CHARINDEX(' ', REVERSE(Ticker))
) BBG
FROM
(VALUES('AAPL US EQUITY'), ('Z M3 INDEX'), ('FVH4 COMDTY')) BBG(Ticker)
將字串反轉,找到最後一個空白。MSSQL的起始位置可為負值,但並非代表方向(由右至左)。
|
執行結果如下圖所示:
沒有留言:
張貼留言