获取数字的SQL正则表达式
我的数据库中有以下时间字段:获取数字的SQL正则表达式,sql,regex,oracle,plsql,Sql,Regex,Oracle,Plsql,我的数据库中有以下时间字段: 0400 - 0530 0430 - 0530 0930 - 1050 1000 - 1130 1400 - 1450 用户可以输入2个字符作为开始时间04将返回: 0400 - 0530 0430 - 0530 我目前使用一个检查来获取开始时间:to_char(a.time,'hh24') 我希望能够修改这个,所以我实际上得到了这个范围内的时间。例如,10将返回: 1000 - 1130 我需要它返回: 0930 - 1050 1000 - 1050 我的
0400 - 0530
0430 - 0530
0930 - 1050
1000 - 1130
1400 - 1450
用户可以输入2个字符作为开始时间<代码>04将返回:
0400 - 0530
0430 - 0530
我目前使用一个检查来获取开始时间:to_char(a.time,'hh24')
我希望能够修改这个,所以我实际上得到了这个范围内的时间。例如,10
将返回:
1000 - 1130
我需要它返回:
0930 - 1050
1000 - 1050
我的想法是使用正则表达式来获取-
之后的2位数字。我怎样才能做到这一点呢?你可以试试
^(\d{4} - 10\d{2}|10\d{2} - \d{4})$
这是
如果不支持,请使用[0-9]
代替\d
示例查询
WHERE REGEXP_LIKE(column_name, '^(\d{4} - 10\d{2}|10\d{2} - \d{4})$')
看看
select * from table where
regexp_substr(time_string, '^\d\d') = input_string
or regexp_replace(regexp_substr(time_string, '-\s*\d\d'), '-\s*', '') = input_string
或者,如果您想尝试匹配实际的日期
列,您可以尝试以下操作:
select * from table where
to_char(start, 'HH24') = input_string
or to_char(end, 'HH24') = input_string
您使用的是哪种RDBMS?我使用的是Oracle。不确定为什么有人删除了这些标记。这些时间实际上是存储为
DATE
值,还是存储为您在上面表示的字符串?字符串。(char11)它是一个自定义字段,基于两个时间字段start
和end
,其值类似于3:30:00.000000 pm