簡體   English   中英

通配符搜索數字范圍

[英]Wildcard Search for a numeric range

我正在嘗試過濾掉具有客戶互聯網計划的列(plan_name)。 例如(200GB 快速無限、免費附加郵箱、無限 VDSL...)。 我特別想過濾掉其中沒有任何數字的計划 該列的類型為 varchar2,我正在查詢 Oracle 數據庫。 我寫了以下代碼:

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

但是,此代碼仍會返回包含數字的 200GB 快速計划? 誰能解釋這是為什么?

Oracle 的like語法不支持您嘗試的那種模式匹配。 這是 SQL 服務器語法。 Oracle將該模式解釋為文字'[0-9]' (顯然, '200GB'類的內容不匹配)。

但是,與 SQL 服務器不同,Oracle 通過regexp_*函數對正則表達式有適當的支持。 如果您想要不包含數字的值,您可以執行以下操作:

where not regexp_like(plan_name, '\d')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM