我需要查询存储地址的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的语句?
答案 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而不是 - 想象它们是物化视图 - 如果该用户的地址有数字,您可以存储在一个位中。