純粹CSV格式字串(如: A,B,C),資料可能為使用者輸入或傳入參數等,現已有許多函數或基本作法處理上非常簡便,ORACLE可直接使用DBMS_DEBUG_VC2COLL或使用者自建Type等方法進行轉換,MSSQL於2016版本起提供STRING_SPLIT函數可直接呼叫使用。
版本
|
SQL
|
MSSQL
2005
|
SELECT ROW_NUMBER() OVER (ORDER BY GETDATE()) SEQ
, Split.Col.value('.', 'VARCHAR(100)') AS X
FROM
(
SELECT CAST ('<S>'
+ REPLACE('A,B,C', ',', '</S><S>')
+ '</S>' AS XML
) AS Val_List
) AS A
CROSS APPLY Val_List.nodes ('//S') AS Split(Col)
|
MSSQL
2016
|
SELECT value --欄位名稱為value
FROM STRING_SPLIT('A,B,C', ',')
|
ORACLE
10g
|
SELECT column_value
FROM TABLE(SYS.DBMS_DEBUG_VC2COLL( 'A','B','C' ) );
SELECT column_value
FROM TABLE( SYS.DBMS_DEBUG_VC2COLL( 1, 2, 3 ));
9i版本可使用自建TYPE即可
CREATE OR REPLACE TYPE SPLIT_TBL AS TABLE OF VARCHAR2(32767) ;
SELECT column_value
FROM TABLE(SPLIT_TBL( 'A','B','C' ) );
|
沒有留言:
張貼留言