sql-server - 拆分句子并在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)
任何人都可以帮助我吗?
解决方案
一种方法是几个嵌套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);
推荐阅读
- php - 打开一页时,XAMPP MySQL 已开始意外关闭
- c++ - Chase Lev deque 栅栏
- terraform - Azure 负载均衡器中的多个前端配置,带有使用 Terraform 的单个 VM
- javascript - 如何制作一个带有位置的块:固定在通过某个边界时改变颜色?
- android-jetpack-compose - FocusRequestor 正在吃后面的动作,需要额外的后面动作
- python - 如何并行运行python HTTP流服务器(PiCamera)+运动检测?
- oauth-2.0 - Fastapi:如何更新/更改 OAuth2 Bearer 令牌
- javascript - 使用 javascript 和 Cypress 在浏览器中设置代理
- python - 替代 TK 来获取文件打开对话框 (Spyder)
- javascript - 重新编码未定义的 javascript 函数