数字范围的通配符搜索

dgsult0t  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(474)

我试图筛选出一个列(plan\u name),其中包含客户的互联网计划。例如(200gb快速无限,免费附加邮箱,无限vdsl…)。我特别想过滤掉那些没有任何数字的计划。列的类型是varchar2,我正在查询一个oracle数据库。我编写了以下代码:

SELECT *
FROM   plans
WHERE  plan_name NOT LIKE '%[0-9]%'

然而,这段代码仍然返回像200gbfast这样的计划,其中包含数字?有人能解释这是为什么吗?

9njqaruj

9njqaruj1#

甲骨文 like 语法不支持您正在尝试的那种模式匹配。这是sql server语法。甲骨文将这种模式解释为 '[0-9]' (很明显,有点像 '200GB' 不匹配)。
但是,与SQLServer不同,oracle通过 regexp_* 功能。如果希望值不包含数字,可以执行以下操作:

where not regexp_like(plan_name, '\d')

相关问题