使用SQL函数删除指定内容-综合交流区服务中心-低代码平台-本牛千智丨专注WorkFine开发

使用SQL函数删除指定内容

当然可以!下面我将逐行解释这个 SQL 语句的含义,并按照你的要求:把表名和字段名都改成中文(比如表叫 供应商信息表,字段叫 原始内容清理后内容),同时保持逻辑不变。


✅ 修改后的语句(使用中文表名和字段名):

SELECT 
    原始内容,
    CASE 
        WHEN CHARINDEX(N'供应商1', 原始内容) > 0
        THEN STUFF(原始内容, CHARINDEX(N'供应商1', 原始内容), LEN(N'供应商1'), '')
        ELSE 原始内容
    END AS 清理后内容
FROM 供应商信息表;

🔍 逐行解释:

1. SELECT 原始内容,

  • 从表中选出原始的字符串字段(即你原来的数据,比如 "供应商1,A公司供应商1,A公司供应商2")。

2. CASE ... END AS 清理后内容

  • 使用 CASE 条件表达式来判断是否需要处理该字段。
  • 最终结果命名为 清理后内容

3. WHEN CHARINDEX(N'供应商1', 原始内容) > 0

  • CHARINDEX(子串, 字符串):在 SQL Server 中用于查找一个子字符串在主字符串中的起始位置(从1开始计数)。
  • 如果找到了“供应商1”,就返回它的位置(比如第1位);如果没找到,返回 0。
  • 所以这行意思是:如果“供应商1”存在于“原始内容”中

💡 N'...' 表示这是一个 Unicode 字符串(支持中文),推荐在处理中文时加上 N 前缀,避免乱码。

4. THEN STUFF(原始内容, CHARINDEX(N'供应商1', 原始内容), LEN(N'供应商1'), '')

  • 如果找到了,就用 STUFF 函数把“供应商1”从第一次出现的位置删掉
  • STUFF(原字符串, 起始位置, 删除长度, 替换内容)
    • 原始内容:要处理的完整字符串。
    • CHARINDEX(...):找到“供应商1”开始的位置(比如是1)。
    • LEN(N'供应商1'):计算“供应商1”有几个字符(这里是4个汉字,所以长度为4)。
    • '':用空字符串替换,相当于删除

✅ 举例:

  • 输入:"供应商1,A公司供应商1,A公司供应商2"
  • CHARINDEX 返回 1
  • LEN('供应商1') = 4
  • STUFF(..., 1, 4, '') → 从第1位删4个字符 → 结果是 "A公司供应商1,A公司供应商2"

5. ELSE 原始内容

  • 如果字符串里根本没有“供应商1”,就原样返回,不做修改。

6. FROM 供应商信息表;

  • 数据来源是名为 供应商信息表 的表(这是你自定义的中文表名,在 SQL Server 中允许使用中文对象名,但建议用方括号包裹以防出错,见下方“注意事项”)。

📌 总结

这条语句的作用是:

在“供应商信息表”的“原始内容”字段中,查找并删除第一个出现的“供应商1”子串,返回处理后的结果作为“清理后内容”;如果找不到,就保持原样。

请登录后发表评论

    请登录后查看回复内容