删除“,”或“。”之后的所有内容在一个字符串中 - 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
虽然我在 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