【问题标题】:How do I write a SQL Query to fetch data according to a specific format/ pattern of String?如何编写 SQL 查询以根据字符串的特定格式/模式获取数据?
【发布时间】:2017-06-08 08:53:19
【问题描述】:

我需要编写一个 SQL 查询来根据 String 的特定格式获取数据。我需要获取查询的 LOC 列如下所示的那些记录:

Cx-xxx-Lx
Or
Cxx-xxx-Lx
Or
x-xxx-Lx
Or
xx-xxx-Lx
Or
xxxxxLx_x
Or
xxxxxLx_xx
Or
BxxxLLxxxx
Where :-
x is a number (0 to 9)
L is a letter (A to Z)

我已过滤 LOC 列以获取记录长度为 9 或 10 的数据。虽然这是从数据库中获取正确的数据,但这不是正确的方法。

我当前的 SQL:

select * from table
where length(LOC) in (9,10)

任何帮助将不胜感激。

【问题讨论】:

  • 使用REGEXP_LIKE

标签: sql oracle oracle11g


【解决方案1】:

您可以使用正则表达式。比如:

where regexp_like(LOC, '^C?[0-9]{1,2}-[0-9]{3}-[A-Z][0-9]$') or
      regexp_like(LOC, '^[0-9]{5}[A-Z][0-9]_[0-9]{1,2}$') or
      regexp_like(LOC, '^B[0-9]{3}[A-Z]{2}[0-9]{4}$') 

您可以使用| 将它们组合成一个正则表达式。我认为作为三个单独的表达式进行跟踪和调试更容易。

【讨论】:

  • @mathguy 。 . .谢谢。
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
相关资源
最近更新 更多