如何在OData请求URL中使用通配符查询user_id以user开头的用户数据
OData 按字段前缀查询报错解决方案
报错原因
你触发报错的核心原因是混淆了OData的主键单查语法和条件筛选语法:
- 实体集名称后紧跟的
(字段名='值')是OData专门用于按主键查询单个唯一实体的语法,仅支持等值主键匹配,不允许传入LIKE这类逻辑运算符或模糊匹配条件,因此你把模糊筛选规则放在这个位置会直接触发参数校验错误。
正确实现方案
要实现查询所有user_id以user开头的用户数据,需要使用OData标准的$filter系统查询参数,搭配内置的startswith字符串函数完成匹配,正确的请求URL写法如下:
https://*****************/userdata?$filter=startswith(user_id, 'user')
额外注意事项
- 如果你的OData服务对特殊字符校验严格,可以对参数中的符号做URL编码,编码后的请求地址为:
https://*****************/userdata?$filter=startswith(user_id%2C%20%27user%27)
- 如果需要其他字符串匹配逻辑,可以替换对应函数即可:
- 包含指定字符串:
$filter=contains(user_id, '目标字符串') - 后缀匹配指定字符串:
$filter=endswith(user_id, '目标后缀')
- 包含指定字符串:
内容的提问来源于stack exchange,提问作者monica_s
相关产品推荐
相关产品推荐

