T-SQL字符串分割:巧妙处理分隔符缺失
在T-SQL中,基于分隔符分割字符串可能很棘手,尤其当某些行中缺少分隔符时。本文提供一种改进方法来解决这个问题。
假设数据如下:
<code>John/Smith Jane/Doe Steve Bob/Johnson</code>
原始代码:
以下代码尝试分割数据,但在分隔符缺失时会失败:
<code>SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName, SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName FROM MyTable</code>
改进代码:
为了处理分隔符缺失的情况,我们可以使用以下CASE表达式:
<code>SELECT SUBSTRING(myColumn, 1, CASE CHARINDEX('/', myColumn) WHEN 0 THEN LEN(myColumn) ELSE CHARINDEX('/', myColumn) - 1 END) AS FirstName ,SUBSTRING(myColumn, CASE CHARINDEX('/', myColumn) WHEN 0 THEN LEN(myColumn) + 1 ELSE CHARINDEX('/', myColumn) + 1 END, 1000) AS LastName FROM MyTable</code>
说明:
此代码将产生预期的结果:
<code>FirstName---LastName John--------Smith Jane--------Doe Steve-------NULL Bob---------Johnson</code>
以上是如何使用分隔符在 T-SQL 中稳健地拆分字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!