sql - 如何获取字符串中特定字符的所有位置索引?
问题描述
我正在使用 postgres 和 PgAdmin3。我被卡住了,我什至不知道从哪里开始!
我有一个具有以下格式的列:
tvd_unit
YYNNNNNNNNNNNNNYYNNNNN
该列包含 22 个职位,职位代表行为在特定业务单元中是否活跃,通过是或否(Y 或 N)
在上面的示例中,该参数仅在 1、2、16 和 17 单位中有效。其余的都关闭了,我需要开发一个查询来返回参数处于活动状态的每个单元数,在上面的示例中,我需要返回:
1, 2, 16, 17
老实说,我不知道如何开始获得单位数量,我需要帮助。
解决方案
您可以使用 generate_series 和 substr 从字符串中获取每个元素:
with data as (select 'YYNNNNNNNNNNNNNYYNNNNN' as tvd_unit)
select position,
substr(tvd_unit, position, 1) as active
FROM data,
generate_series(1, length(tvd_unit), 1) g(position)
WHERE substr(tvd_unit, position, 1) = 'Y';
position | active
----------+--------
1 | Y
2 | Y
16 | Y
17 | Y
(4 rows)
推荐阅读
- python - canvas.move 在多帧结构化类 tkinter 中不起作用
- onem2m - filterCriteria.filterOperation 是什么类型的?
- javascript - 为什么我在运行我的应用程序时收到“无法获取/错误”消息?
- java - 添加 InternalFrames 时,Java JFrame 未显示在输出中
- swift - 向 NSTableView 添加行时数组索引超出范围
- c# - 控制台应用程序内的计时器不会触发事件
- php - Wordpress WpForm自定义提交按钮以调用外部API(Json)
- python - Flask 未检测到 URLS 中的尾部反斜杠
- rest - 自托管 OWIN Web 服务 - 不听
- dart - 使用循环输出一行中的元素