2016-05-31 103 views
0

我需要查詢存儲地址的Vertica數據庫,並在varchar不包含數字的情況下獲取結果。在Vertica中,什麼表達式會忽略包含任何數字的結果?

對於SQL Server有人建議:

SELECT * 
FROM Table 
WHERE Column NOT LIKE '%[0-9]%' 

但這不是在Vertica的工作,這意味着我得到返回的每個地址有和沒有在現場地址1的數。我可以做下面的,但它是笨重:

select * 
from [TABLE_NAME] 
where [FIELD] NOT like '%0%' 
    and [FIELD] NOT like '%1%' 
    and [FIELD] NOT like '%2%' 
    and [FIELD] NOT like '%3%' 
    and [FIELD] NOT like '%4%' 
    and [FIELD] NOT like '%5%' 
    and [FIELD] NOT like '%6%' 
    and [FIELD] NOT like '%7%' 
    and [FIELD] NOT like '%8%' 
    and [FIELD] NOT like '%9%'; 

是否有一個乾淨的表達,可以在Vertica的使用類似於SQL Server的聲明?

回答

1

您正在使用SQL Server LIKE語法。使用正則表達式來代替:

where not regexp_like(column, '[0-9]') 

,或者:

where regexp_like(column, '^[^0-9]*$') 
0

HP Vertica的是用來處理海量數據的一個數據庫引擎。 如果您的項目使用Vertica,則很可能正在處理或計劃處理大量數據。

您採用的不喜歡的方法或具有正則表達式的替代方法可以工作,但不會像原生Vertica解決方案那樣擴展。

也許你應該考慮projections代替-imagine他們被物化,則須─在那裏你可以在一個單一的存儲位,如果該用戶的地址有數字或沒有。

相關問題