如何在 Presto 中对包含点的字符串使用 like 运算符?

How to use like operator in Presto with string that contain a dot?

我有一个像这样的列字符串

“测试。123.test” “某事”

我想要 运行 一个查询来查找像“test.*.test”这样的字符串。在 postgresql 中我使用这个查询:

select * from table where string_column like 'test.%.test'

我 运行 这个查询很快,但什么也没得到!它应该与我的字符串中的点有关,因为当我用这样的东西替换字符串时 'test.1%1.test' 它有效,但这不是我的结果。

对于 Presto 查询

string_column like 'test.%.test'

推入 PostgreSQL 连接器的谓词类似于:

string_column BETWEEN 'test.' AND 'test/'

但是,字符串比较需要进行排序,尾随标点符号会遇到 Presto/PostgreSQL 不兼容的边缘情况:https://github.com/trinodb/trino/issues/3645

您可以通过防止谓词下推到连接器中来解决方法。您可以通过在查询中添加 OR rand() = 42 来实现此目的:

string_column like 'test.%.test' OR rand() = 42