如何使用CQL将Cassandra的Map类型Blob记录转换为文本?
正确解决方法
针对你的表结构,要把Blob类型的map值转成字符串,正确的查询语句如下:
SELECT blobastext(":attrs"['key_name']) FROM my_table;
注意事项:
- 原语句报错大概率是因为函数名大小写问题,Cassandra/ScyllaDB这类兼容CQL的数据库,官方转换函数是小写的
blobastext(虽然CQL本身对函数名大小写不敏感,但部分客户端可能要求严格小写)。 - 列名
:attrs包含特殊字符,必须用双引号包裹才能被数据库正确识别。 blobastext会按UTF-8编码把二进制Blob转成字符串,要确保插入数据时用的编码和转换时一致,避免出现乱码。
如果你的数据库不是CQL兼容类型(比如MySQL),可以用CAST或CONVERT函数实现转换:
SELECT CAST(`:attrs`->>'key_name' AS CHAR) FROM my_table;
内容的提问来源于stack exchange,提问作者java_doctor_101
相关产品推荐
相关产品推荐

