首页 > 数据库 > mysql教程 > 如何在 T-SQL 中使用分隔符安全地分割字符串?

如何在 T-SQL 中使用分隔符安全地分割字符串?

Linda Hamilton
发布: 2025-01-08 09:52:41
原创
303 人浏览过

How to Safely Split Strings in T-SQL Using Delimiters?

在 T-SQL 中基于分隔符分割字符串

问题:

在 SQL 中,使用 SUBSTRING 基于分隔符分割字符串,当分隔符不存在时可能会导致错误。下面的代码演示了这一点:

<code class="language-sql">SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
       SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName
FROM   MyTable</code>
登录后复制

当遇到没有分隔符的行时,它会抛出错误:“传递给 LEFT 或 SUBSTRING 函数的长度参数无效。”

解决方案:

为了解决这个问题,可以在 SUBSTRING 函数中使用 CASE 语句,如下所示:

<code class="language-sql">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>
登录后复制

此更新后的代码使用 CHARINDEX 评估分隔符的位置。如果找不到分隔符(CHARINDEX 返回 0),则 CASE 语句使用字符串的长度来确保整个字符串都被视为名字。如果存在分隔符,它会计算分隔符后第一个字符的位置作为姓氏的起始索引。

以上是如何在 T-SQL 中使用分隔符安全地分割字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板