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

In Vertica, what expression will omit results that contain any numeral?

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

对于 SQL 服务器有人建议:

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 服务器的语句的简洁表达式?

您正在使用 SQL 服务器 LIKE 语法。请改用正则表达式:

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

或者,或者:

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

HP Vertica 是为处理海量数据而开发的数据库引擎。 如果您的项目使用 Vertica,很可能正在处理或计划处理大量数据。

您采用的不喜欢的方法或使用正则表达式的替代方法会起作用,但不会像本机 Vertica 解决方案那样可扩展。

也许您应该研究一下 projections - 假设它们是物化视图 - 如果该用户的地址有或没有数字,您可以在其中存储一个位。