[英]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.