假设我的数据库有几个条目
2345
2532-1
2593-R2
2380
2013-E1
我如何修剪破折号右边的所有内容' - '包括破折号本身,同时保留所有数字?
答案 0 :(得分:3)
您可以将substr
与instr
一起使用,但是您需要将第二个参数更改为substr
,具体取决于该值是否具有短划线,您可以对案例执行此操作语句:
select substr(value, 1,
case
when instr(value, '-') > 0 then instr(value, '-') - 1
else length(value)
end)
from <your table>;
instr(value, '-')
为您提供值中第一个-
的位置,如果根本没有出现,则为零。如果它为零,那么你需要完整的字符串,所以你可以使用长度;否则你想要-
之前的角色。或者,如果存在-
,则只能执行子字符串,否则使用原始值,这可能有点整洁:
select case
when instr(value, '-') > 0 then substr(value, 1, instr(value, '-') - 1)
else value
end
from <your table>;
快速演示样本值:
with t (value) as (
select '2345' from dual
union all select '2532-1' from dual
union all select '2593-R2' from dual
union all select '2380' from dual
union all select '2013-E1' from dual
)
select value,
case
when instr(value, '-') > 0 then substr(value, 1, instr(value, '-') - 1)
else value
end
from t;
VALUE CASEWHE
------- -------
2345 2345
2532-1 2532
2593-R2 2593
2380 2380
2013-E1 2013
你甚至可以使用一个匹配第一个-
的所有内容的正则表达式:
select regexp_substr(value, '[^-]*')
from <your table>
...但这可能会慢一些,但代码更短。
答案 1 :(得分:0)
首先,您可以通过INSTR找到破折号的位置。 然后使用SUBSTR从位置1到达破折号。
<button class="icon-left ion-information" ng-click="stationInfoButtonClick('+location.name+')"></button>