【发布时间】:2016-01-26 23:54:18
【问题描述】:
我正在使用 Oracle 数据库,并且正在尝试选择括号之间的值。这是我的表格,其中有 ID 和 Roads 作为列。我有这个数据库的只读权限,所以我只能使用SELECT:
ID Roads
-- -----
1 #Chaussée de Waterloo (Ixelles)#
2 #Rue Reper-Vreven (Bruxelles)#
3 #Rue des Fraises (Anderlecht)#
4 #Chaussée de Roodebeek (Woluwe-Saint-Lambert)#
5 #Square Jean Absil (Etterbeek)#Avenue Hansen-Soulie (Etterbeek)#Avenue Le Marinel (Etterbeek)#
基本上,从Roads 列中,我只想保留括号之间的值。由于最终查询中包含其他表,因此我想要一个不同的选择。所需的输出是:
ID Roads
------------------
1 Ixelles
2 Bruxelles
3 Anderlecht
4 Woluwe-Saint-Lambert
5 Etterbeek, Etterbeek, Etterbeek
我尝试了以下查询,当只有一组括号时它可以正常工作,但是当有多个括号时它不起作用(例如 ID 5),因为它只返回第一组中的值括号:
select distinct substr(roads, instr(roads,'(') + 1, instr(roads,')') - instr(roads,'(') - 1) as roads
from table
有人知道我哪里出错了吗?
【问题讨论】:
-
错误 #1:没有规范化您的数据集。
-
@Marc B 具体是什么意思?
-
数据规范化是关系数据库的基础
-
@lad2025 感谢您的建议,但它只返回第一组括号之间的值...