首页 > 解决方案 > 拆分句子并在sql中仅选择所需的字符串

问题描述

我的表中有一个名为 billing_cycle 的列,它只包含下面给定的两个字符串,我只需要从该字符串中检索每月和每季度一次。

使用下面的查询,我可以正确地获取字符串 Quarterly 但不是每月字符串。在输出中,单词 A 与字符串 Monthly 重叠。可以使用 case 和 stuff 命令替换它,但我不想使用这些。我想使用 substring 和 charindex 或任何其他函数来获取输出。

SELECT substring('208-Billing Period - Quarterly Average Daily Balance', charindex('- ', '208-Billing Period - Quarterly Average Daily Balance') + 2, 9)


SELECT substring('210-Billing Period - Monthly Average Daily Balance', charindex('- ', '210-Billing Period - Monthly Average Daily Balance') + 2, 9)

任何人都可以帮助我吗?

标签: sql-servertsqlsql-function

解决方案


一种方法是几个嵌套CHARINDEX函数。我这样做是FROM因为它避免了表达式的重复:

SELECT SUBSTRING(V.YourColumn,CI1.I, CI2.I - CI1.I)
FROM (VALUES('208-Billing Period - Quarterly Average Daily Balance'),('210-Billing Period - Monthly Average Daily Balance'))V(YourColumn)
     CROSS APPLY (VALUES(CHARINDEX('- ',V.YourColumn)+2))CI1(I)
     CROSS APPLY (VALUES(CHARINDEX(' ',V.YourColumn,CI1.I)))CI2(I);

推荐阅读