删除“,”或“。”之后的所有内容在一个字符串中 - SQL 服务器

Removing everything after ',' or '.' in a string - SQL Server

虽然我在 Whosebug 上查看了答案,但我不确定是否适合将其应用到我的具体案例中:

Select s.saleno, s.comments,
case 
    when Charindex('held by', s.comments) > 0 
    then substring(s.comments, Charindex('held by', s.comments)+8,40)
    else null end as TrimmedText,
FROMsales s
JOIN push p 
ON p.saleno = s.saleno
WHERE Charindex('held by', s.comments) > 0;

问题是我得到的结果如下:

CompanyTwo, due ti
CompanyThreeee.
CompanyLong, is a scan 
CompanyShort, originally dated 01/01/2000
CompanyTTT.
CompanySomething, due 02/01/2010.

我需要的结果:

CompanyTwo
CompanyThreeee
CompanyLong
CompanyShort
CompanyTTT
CompanySomething

我一直想保持 "Company[...]" 直到遇到点或逗号。此字符串后始终出现一个点或逗号。

感谢您的帮助!

@Robert,你的评论说得很清楚了。你在这里:

将其粘贴到空查询中 window 并执行。适应您的需求...

DECLARE @tbl TABLE(txt VARCHAR(100));
INSERT INTO @tbl VALUES
 ('CompanyTwo, due ti')
,('CompanyThreeee.')
,('CompanyLong, is a scan')
,('CompanyShort, originally dated 01/01/2000')
,('CompanyTTT.')
,('Company without something')
,('CompanySomething, due 02/01/2010.');

SELECT pos.*,pos2.*, LEFT(txt,(CASE WHEN pos2.Comma<pos2.Dot THEN pos2.Comma-1 ELSE pos2.Dot-1 END)) AS YourCompany
FROM @tbl AS t
CROSS APPLY
(SELECT ISNULL(CHARINDEX(',',t.txt),100000) AS Comma
       ,ISNULL(CHARINDEX('.',t.txt),100000) AS Dot
) AS pos
CROSS APPLY
(SELECT CASE WHEN pos.Comma=0 THEN 100000 ELSE pos.Comma END AS Comma
       ,CASE WHEN pos.Dot=0 THEN 100000 ELSE pos.Dot END AS Dot

) AS pos2