Cassandra:如何基于LIKE或CONTAINS筛选键空间中的表?
解决Cassandra表名筛选不符合预期的问题
你遇到的问题根源在于普通字符串比较里的'%'不是通配符——你用的>= 'test_001_%'是按字典序做字符串大小比较,这里的'%'只是一个普通字符,所以像test_002_metadata这类字符串因为字典序大于test_001_%,就会被错误地包含进来。
要正确筛选以test_001_开头的表,你需要用Cassandra支持的LIKE操作符,它才会把'%'当作通配符(匹配任意长度的任意字符):
SELECT table_name FROM system_schema.tables WHERE keyspace_name = 'test' AND table_name LIKE 'test_001_%';
如果需要更灵活的匹配规则,还可以使用REGEXP操作符结合正则表达式,比如确保表名以test_001_开头且后面有内容:
SELECT table_name FROM system_schema.tables WHERE keyspace_name = 'test' AND table_name REGEXP '^test_001_.+';
这样就能精准筛选出你想要的表了。
内容的提问来源于stack exchange,提问作者jOasis
相关产品推荐
相关产品推荐

