T-SQL中處理有或沒有分隔符號的字串分割
SQL查詢經常需要操作字串並根據分隔符號提取特定部分。然而,處理分隔符號可能缺失或可選的情況需要仔細規劃。
在給定的場景中,任務是分割一個包含以'/'字元分隔的姓名(名字和姓氏)的字串列。程式碼最初假設所有行都包含分隔符,但對於不包含分隔符的行出現了錯誤。
為了有效率地處理這個問題,我們可以實現以下修改:
<code class="language-sql">SELECT CASE WHEN CHARINDEX('/', myColumn) = 0 THEN myColumn ELSE SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn) - 1) END AS FirstName, CASE WHEN CHARINDEX('/', myColumn) = 0 THEN NULL ELSE SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, LEN(myColumn)) END AS LastName FROM MyTable;</code>
這段修改後的程式碼使用CASE語句檢查'/'字元是否存在(如果不存在,CHARINDEX('/')回傳0)。如果找到,則按預期分割字串;否則,它將整個字串視為名字,並將姓氏設為NULL。
透過加入此邏輯,查詢變得健壯,可以處理包含和不包含分隔符號的行,從而提供所需輸出:
FirstName | LastName |
---|---|
John | Smith |
Jane | Doe |
Steve | NULL |
Bob | Johnson |
以上是如何在 T-SQL 中使用可選分隔符號有效分割字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!