如何用WHERE与LIKE子句查询film表中R级影片?及SQL报错处理
问题解决:PostgreSQL枚举类型字段使用LIKE查询的错误与解决方案
错误原因
你遇到的ERROR: operator does not exist: mpaa_rating ~~ unknown错误,是因为film表的rating字段是PostgreSQL枚举类型(mpaa_rating),而LIKE运算符仅支持字符串类型的比较。直接用字符串字面量和枚举类型字段比较时,PostgreSQL找不到对应的运算符,因此报错。
查询R级影片的正确方法
方法1:精确匹配(推荐,性能更高)
因为R级是枚举类型中的明确值,直接使用相等运算符=即可,不需要LIKE:
SELECT rating, title FROM film WHERE rating = 'R';
方法2:显式类型转换配合LIKE(适用于模糊匹配场景)
如果确实需要用LIKE(比如模糊匹配以特定字符开头的枚举值),需要先将枚举类型转换为字符串类型,可用::text语法或CAST()函数:
-- 用::text转换类型 SELECT rating, title FROM film WHERE rating::text LIKE 'R'; -- 或者用CAST函数 SELECT rating, title FROM film WHERE CAST(rating AS text) LIKE 'R%';
内容的提问来源于stack exchange,提问作者Vinoth.N
相关产品推荐
相关产品推荐

