在Presto SQL中比较列表格式字符串的正确方式及CAST用法疑问
问题解答
- 这种写法是合理且有效的,核心原因是不同SQL数据库引擎对字符串字面量的默认类型定义存在差异:
- 当你直接写
'[1]'时,部分引擎会默认将其识别为CHAR类型(固定长度字符串),而你的列类型是String()(通常对应VARCHAR可变长度类型)。CHAR类型会自动补空格到指定长度,导致和VARCHAR列的'[1]'(无补空格)无法匹配。 - 用
CAST('[1]' AS VARCHAR)显式将字面量转为可变长度字符串类型,和列的String()类型完全匹配,因此能正确命中目标行。
- 当你直接写
- 额外建议:如果你的SQL引擎支持,也可以直接使用
VARCHAR类型的字面量写法(比如部分引擎支持VARCHAR(2)'[1]'这类语法),效果和CAST一致,写法更简洁。
内容的提问来源于stack exchange,提问作者J21
相关产品推荐
相关产品推荐

