讲一下在之前工作中碰到的问题:
业务场景
- 前台通过深度学习识别图片上的数字编号把数据通过OPC方式传到后台.
- 后台进行接收写入到数据库.
- 报表系统通过查询图片对应的数据获取到图片上的编号信息.
业务剖析
三个步骤看起来不是很难,一个数据交互的场景,一个查询回显的场景.
但是在数据交互这里,和传输方测试数据时发现了几个大坑…
深度学习在识别编号后是以ASCLL码的格式写入到Channel信道里的. 而且每个中间还加了分隔符(大概是分隔符或者类似分隔符的一种格式).
我这边去读取就算配置了读取长度也无法读取整串编号. 而且编号还是以ASCLL码格式呈现.
然后就造成了写入了多比数据到数据库(ASCLL码直接转换,但读取无法修改只能通过)
然后就有了类似下面的这种数据:
1 | | id | Value | Paramid | update_time | |
但实际上的我需要的结果是这样的:
1 | | id | Value | Paramid | update_time | |
查了一下,发现在oracle中实现了功能的这个函数叫wm_concat()
.
传入的参数为分组的字段名,查询出来的结果通过,
来拼接的.
demo:
1 | select t1.id,t2.Values,t1.update_time |
output:
1 | | id | Values | Paramid | update_time | |
这个时候就很简单了,用replace()
来把,
替换成空字符就可以了.
demo:
1 | select t1.id,t2.Values,t1.update_time |
output:
1 | | id | Value | Paramid | update_time | |