You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL处理RSS源会议名称:仅移除日期前连字符的实现方案

解决SQL会议名称格式化的连字符截断问题

从RSS提取会议名称插入dbo.Meeting表时,原SQL通过定位第一个连字符来截断日期后缀,但遇到会议名本身包含连字符(比如City-County Homeless Issues Committee)的情况时,会错误截断有效名称,只保留City这类不完整内容。

优化方案:定位最后一个连字符

核心思路是:日期后缀始终在最后一个连字符之后,因此通过反转字符串找到最后一个连字符的位置,就能精准提取完整的会议名称,无需判断连字符数量。

测试代码

DECLARE @myText as varchar(100) = 'Police Civilian Oversight Board Community Engagement Subcommittee - December 12, 2024'
--DECLARE @myText as varchar(100) = 'City-County Homeless Issues Committee - December 2, 2024'

SELECT 
    FORMAT(GETDATE(), 'MM/dd/yyyy hh:mm tt') + ' - ' + 
    LEFT(@myText, LEN(@myText) - CHARINDEX('-', REVERSE(@myText)) - 1) AS MeetingName

代码解释

  1. REVERSE(@myText):将字符串反转,原字符串的最后一个连字符变为反转后的第一个连字符
  2. CHARINDEX('-', REVERSE(@myText)):获取反转后第一个连字符的位置,对应原字符串最后一个连字符的偏移量
  3. LEN(@myText) - CHARINDEX('-', REVERSE(@myText)) - 1:计算原字符串中最后一个连字符前的字符长度,-1是为了去掉连字符前的空格(比如 - December中的空格)

完整插入语句

INSERT INTO dbo.Meeting
SELECT 
    a.MeetingID,
    FORMAT(a.MeetingDate, 'MM/dd/yyyy hh:mm tt') + ' - ' + 
    LEFT(a.MeetingName, LEN(a.MeetingName) - CHARINDEX('-', REVERSE(a.MeetingName)) - 1) AS MeetingName,
    MeetingTitle
FROM 
    -- 替换为你的源表或子查询
    YourSourceTable a

兼容无日期后缀的情况

如果存在部分会议名没有日期后缀(无连字符),可以添加判断避免报错:

INSERT INTO dbo.Meeting
SELECT 
    a.MeetingID,
    FORMAT(a.MeetingDate, 'MM/dd/yyyy hh:mm tt') + ' - ' + 
    CASE 
        WHEN CHARINDEX('-', a.MeetingName) > 0 THEN
            LEFT(a.MeetingName, LEN(a.MeetingName) - CHARINDEX('-', REVERSE(a.MeetingName)) - 1)
        ELSE
            a.MeetingName
    END AS MeetingName,
    MeetingTitle
FROM 
    YourSourceTable a

内容的提问来源于stack exchange,提问作者erasmo carlos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:13:18