我正在尝试用reportbuilder(数字隐喻,而不是microsoft)创建一个报表,但是我很难让sql实现我想要的功能。
我有一张带字段的table building
:
| building |
+------------+
| WhiteHouse |
| TajMahal |
还有一个带字段的表 locations
:
| id | locations |
+----+-----------------------------------------------------------------+
| 1 | WhiteHouse:RoseGarden,WhiteHouse:MapRoom,TajMahal:MainSanctuary |
| 2 | TajMahal:NorthGarden,WhiteHouse:GreenRoom |
我想创建一个表格,显示每个建筑在建筑中的使用次数 locations
,就像这样:
| building | count |
+------------+-------+
| WhiteHouse | 3 |
| TajMahal | 2 |
人物 :
以及 ,
从不在建筑物或房间名称中使用。即使是一个快速而肮脏的解决方案,假设建筑名称永远不会出现在房间名称中,对我来说也足够了。
当然,这在任何一种正常的编程语言中都是很容易做到的(比如 /\bWhiteHouse:/
); 关键是让rb来做。欢迎提出解决办法的建议。
2条答案
按热度按时间laik7k3q1#
你可以试试这个,可能不是最快的,但肯定更简单的解决方案。
sql fiddle演示
c3frrgcw2#
在sql server中,借助自定义sql拆分函数,可以使用“,”和“:”字符作为分隔符将位置字符串拆分为多个部分,如下所示
我不确定mysql中是否有类似的解决方案,如果有,请检查以下解决方案作为模板