
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表資料
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - Union vs Join
- SQL 鍵
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 複合鍵
- SQL - 候選鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 叢集索引
- SQL - 非叢集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - Min & Max
- SQL - 空值函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複資料
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - Group By vs Order By
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - STRING_SPLIT() 函式
SQL 的STRING_SPLIT()函式用於將字串轉換為列。
它接受三個引數str、separator和enable_ordinal,並根據指定的分割符字元將字串拆分為子字串的行。如果未啟用序數輸出列,則STRING_SPLIT()函式返回一個單列表,其行是子字串。
該列的名稱將為VALUE。如果任何輸入引數為nvarchar或nchar,則返回nvarchar。否則,它返回varchar。返回型別的長度與字串引數的長度相同。
語法
以下是 SQL STRING_SPLIT()函式的語法:
STRING_SPLIT ( string , separator [ , enable_ordinal ] )
引數
str - 它是一個任何字元型別(如 nvarchar、varchar、nchar)的表示式。
separator - 它是一個任何字元型別的單字元表示式,用作連線子字串的分割符。
enable_ordinal - 它是一個 int 或 bit 表示式,用作啟用或停用序數輸出列的標誌。
以下是關於 enable_ordinal 引數的一些重要要點
它是一個可選引數。
如果 enable_ordinal 引數值為1,則啟用序數列。
如果 enable_ordinal 值為NULL,則省略序數列。
如果 enable_ordinal 值為0,則停用序數列。
示例
在以下示例中,我們使用 SQL STRING_SPLIT()函式將字串內容(‘Java’, ‘HTML’, ‘CSS’, ‘JavaScript’,’ Angular’)轉換為列。
SELECT VALUE FROM STRING_SPLIT('Java IS A PROGRAMMING LANGUAGE',' ');
輸出
以下是上述語句的輸出:
+--------------+ | VALUE | +--------------+ | Java | | IS | | A | | PROGRAMMING | | LANGUAGE | +--------------+
示例
如果我們將enable_ordinal引數值作為1傳遞給函式,它將啟用輸出列。
在以下示例中,我們使用STRING_SPLIT()函式將字串(‘Welcome to TutorialsPoint Family’)的內容轉換為列。
SELECT * FROM STRING_SPLIT('Welcome to TutorialsPoint Family', ' ', 1);
輸出
執行上述程式後,將生成以下輸出:
+-----------------+---------+ | VALUE | ordinal | +-----------------+---------+ | Welcome | 1 | | to | 2 | | TutorialsPoint | 3 | | Family | 4 | +-----------------+---------+
示例
如果將enable_ordinal引數值作為0傳遞給函式,它將停用輸出列。
在以下示例中,我們將enable_ordinal引數值作為 0 傳遞給STRING_SPLIT()函式。然後,使用此函式,我們嘗試將字串(‘Hello World’)的內容轉換為列。
SELECT * FROM STRING_SPLIT('Hello World',' ', 0);
輸出
上述程式生成以下輸出:
+----------+ | VALUE | +----------+ | Hello | | World | +----------+
示例
如果我們將enable_ordinal引數值作為NULL傳遞給函式,則此函式將省略輸出列
在以下示例中,我們將 enable_ordinal 引數值作為 NULL 傳遞給STRING_SPLIT()函式。然後,使用此函式,我們嘗試將字串內容('Java IS A PROGRAMMING LANGUAGE',' ', NULL)轉換為列。
SELECT VALUE FROM STRING_SPLIT('Java IS A PROGRAMMING LANGUAGE',' ', NULL);
輸出
以下是上述 SQL 查詢的輸出:
+--------------+ | VALUE | +--------------+ | Java | | IS | | A | | PROGRAMMING | | LANGUAGE | +--------------+
示例
您還可以將表列作為引數傳遞給STRING_SPLIT()函式,以透過值列表查詢行。假設我們使用以下CREATE語句建立了一個名為Customers的表:
CREATE TABLE CUSTOMERS( ID INT NOT NULL, FIRST_NAME VARCHAR (20), LAST_NAME VARCHAR(20), AGE INT NOT NULL, ADDRESS CHAR (25) , SALARY DECIMAL (18, 2));
現在讓我們使用以下INSERT語句將四個記錄插入到 Customers 表中:
INSERT INTO CUSTOMERS VALUES (2, 'Ramesh','KUMAR', 32, 'Ahmedabad', 2000.00 ); INSERT INTO CUSTOMERS VALUES (3, 'Khilan','Verma', 25, 'Delhi', 1500.00 ); INSERT INTO CUSTOMERS VALUES (3, 'kaushik','Gupta', 23, 'Kota', 2000.00 ); INSERT INTO CUSTOMERS VALUES (5, 'Chaitali','Pal', 25, 'Mumbai', 6500.00 );
以下 SQL 查詢透過 Customers 表的值列表檢索行:
SELECT * FROM CUSTOMERS JOIN STRING_SPLIT('3',' ', 1) on value = ID;
輸出
以下是上述查詢的輸出:
+----+------------+-----------+-----+-----------+---------+-------+----------+ | ID | FIRST_NAME | LAST_NAME | AGE | ADDRESS | SALARY | value | ordinal | +----+------------+-----------+-----+-----------+---------+-------+----------+ | 3 | Khilan | Verma | 25 | Delhi | 1500.00 | 3 | 1 | | 3 | kaushik | Gupta | 23 | Kota | 2000.00 | 3 | 1 | +----+------------+-----------+-----+-----------+---------+-------+----------+