iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
自我挑戰組

C# 和 SQL 探索之路 - 2系列 第 24

Day 24: SQL Server 的字串分割

  • 分享至 

  • xImage
  •  

大家好,今天第 24 天 ~

要如何在 SQL Server 中實作字串分割 (類似 C# 字串的 Split 方法) 呢?在 SQL Server 中,並沒有直接提供字串分割的函式。因此要藉由複雜一點的方法來達成:

  1. 先轉成 XML
  2. 查詢 XML,以達成欄位分割

範例程式碼如下:

DECLARE @Name VARCHAR(1000);
SET @Name = 'alice,bob,candy';
DECLARE @xml AS XML;
SET @xml = CONVERT(XML, '<n>' + replace(@Name, ',', '</n><n>') + '</n>') -- 將字串轉成 XML,並加上 n 標籤
SELECT ID
FROM Person P
WHERE P.Name IN (
	SELECT T.n.value('.','varchar(10)') -- 使用 value 函式查詢 XML 的 n 節點
	FROM @xml.nodes('n') T(n)
)

CONVERT 可以轉換資料至不同資料類型,包含 XML。

value 則對 XML 執行 XQuery,並傳回 SQL 類型的值。
XQuery 是一種用來查詢 XML 的語言,用在被放在 SQL 資料庫的 XML 資料。

參考資料

其它方法

  1. 也可以使用 SQLCLR 進行字串分割。
  2. SQL Server 2016 和以後的版本,可以使用 String_split 函式分割字串。可參考: SQL2016新函數String_Split - Rock的SQL筆記本 - 點部落

上一篇
Day 23: SQL 鎖定擴大
下一篇
Day 25: SQL Not Equal 的效能影響
系列文
C# 和 SQL 探索之路 - 230
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言