程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了搜索表达式中是否包含数字:1-3,5,10-15,20大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决搜索表达式中是否包含数字:1-3,5,10-15,20?

开发过程中遇到搜索表达式中是否包含数字:1-3,5,10-15,20的问题如何解决?下面主要结合日常开发的经验,给出你关于搜索表达式中是否包含数字:1-3,5,10-15,20的解决方法建议,希望对你解决搜索表达式中是否包含数字:1-3,5,10-15,20有所启发或帮助;

通过使用REGEXP_SUBSTR函数和分层查询,可以在sql中完成所有这些操作:

with List_of_IDs as (
SELEct regexp_substr(a, '[[:digit:]]+',1, 1) as lot1
     , nvl( regexp_substr(a, '(-)([[:digit:]]+)',1, 1, 'i', '2')
          , regexp_substr(a, '[[:digit:]]+',1, 1)) as lot2
  from (SELEct regexp_substr('1-3,5,10-15,20' , '[^,]+', 1, level) as a
          from dual
       connect by regexp_substr('1-3,5,10-15,20' , '[^,]+', 1, level) is not null
               )
       )
select a.*
  from products a
  join List_of_IDs b
    on a.lot between b.lot1 and b.lot2

但是,我必须强调,正确规范数据库是正确的方法。该解决方案可能无法很好地扩展,并且会进行大量不必要的工作。

是这样的

首先用逗号分割数据:

sql>  SELEct regexp_substr('1-3,5,10-15,20', '[^,]+', 1, level) as a
  2     from dual
  3  connect by regexp_substr('1-3,5,10-15,20', '[^,]+', 1, level) is not null
  4          ;

A
--------------
1-3
5
10-15
20

接下来,在最终将其连接到表之前,在连字符上拆分它以提供在betweeN中使用的最小和最大手数。NVL可以确保始终保持最大值。

sql> SELEct regexp_substr(a, '[[:digit:]]+',1, 1) as lot1
  2       , nvl( regexp_substr(a, '(-)([[:digit:]]+)',1, 1, 'i', '2')
  3             , regexp_substr(a, '[[:digit:]]+',1, 1)) as lot2
  4    from (SELEct regexp_substr('1-3,5,10-15,20' , '[^,]+', 1, level) as a
  5            from dual
  6         connect by regexp_substr('1-3,5,10-15,20' , '[^,]+', 1, level) is not null
  7                 )
  8         ;

LOT1           LOT2
-------------- --------------
1              3
5              5
10             15
20             20

sql>

这是带有完整查询的有效SQL Fiddle。

解决方法

在Oracle数据库表中,我需要查找给定批号的结果。保存批号的字段是一个包含“ 1-3,5,10-15,20”之类的字符串(此字符串内的数字已排序)

有没有办法做到这一点?

在上面的示例中,应该找到以下批号的结果:

1,2,3,10,11,12,13,14,15,20

在应用程序中无法做到这一点,因此必须在数据库内部完成。

类似于:“ SELECT * FROM产品的批次= 2”

大佬总结

以上是大佬教程为你收集整理的搜索表达式中是否包含数字:1-3,5,10-15,20全部内容,希望文章能够帮你解决搜索表达式中是否包含数字:1-3,5,10-15,20所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。