在Vertica中,什么表达式将省略包含任何数字的结果?

时间:2016-05-31 00:33:16

标签: sql vertica

我需要查询存储地址的Vertica数据库,并获得varchar不包含数字的结果。

对于SQL Server,有人建议:

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

但这在Vertica中不起作用,这意味着我会在address1字段中返回包含和不包含数字的每个地址。我可以做下面的事情,除了它很笨重:

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的语句?

2 个答案:

答案 0 :(得分:1)

您正在使用SQL Server LIKE语法。改为使用正则表达式:

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

或者,或者:

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

答案 1 :(得分:0)

HP Vertica是一款用于处理海量数据的数据库引擎。 如果您的项目使用Vertica,则很可能是处理 - 或计划处理非常大量的数据。

您不喜欢的方法,或者使用正则表达式的方法,都可以使用,但不会像原生的Vertica解决方案那样扩展。

也许您应该查看projections而不是 - 想象它们是物化视图 - 如果该用户的地址有数字,您可以存储在一个位中。