如何进行不区分大小写的graphql查询?

Posted

技术标签:

【中文标题】如何进行不区分大小写的graphql查询?【英文标题】:how to make a case-insensitive graphql query? 【发布时间】:2019-05-21 13:24:54 【问题描述】:

使用 GraphQL 获取和解析配置文件,有时文件名是podfile,有时是Podfile,所以我想知道如何进行不区分大小写的查询?

现在我只能查询repository->object: podfile和Podfile,但是如果文件名是podFILE,又不行。

query($org_name: String!, $resp_name: String!)
                
                repository(owner: $org_name name: $resp_name)
                          object: object(expression: "%s:proj.ios_mac/podfile")
                                                              ... on Blob
                                                                          text
                                                                          
                                                              
                          ios_object_1: object(expression: "%s:proj.ios_mac/Podfile")
                                                              ... on Blob
                                                                          text
                                                                          
                                                              
                          
                

REF:https://github.community/t5/How-to-use-Git-and-GitHub/graphql-api-resource-query-is-case-sensitive/m-p/6003

【问题讨论】:

【参考方案1】:
_similar: "%key%" performs Case sensitive query
_ilike:   "%key%" performs case insensitive query

例如:下面的查询将返回名称包含 iphone 的所有设备。如果名称包含“iPhone”,即查询区分大小写,则返回对象失败。

query MyQuery 
  devices: devices(where: name:  _similar: "%iphone%") 
    name
 

以下查询将返回名称包含“iphone”、“iPhone”的所有对象。即不区分大小写

query MyQuery 
  devices: devices(where: name:  _ilike: "%iphone%") 
    name
 

【讨论】:

请补充一点,有助于理解清楚。 @MobileEvangelist 已详细阐述 _喜欢这个答案 ;-)【参考方案2】:

使用_ilike 运算符使查询不区分大小写。

query MyQuery 
  heroes(where: name: _ilike: "%baTmaN%") name, movie 

来源和文档:https://github.com/hasura/graphql-engine/issues/1516

【讨论】:

【参考方案3】:

根据spec,GraphQL 中的名称区分大小写。名称包括字段名、类型名、变量名等。

所以,总之是不可能的。

【讨论】:

规范网址不再起作用,这是 2019 年的更新:graphql.github.io/graphql-spec/June2018/#sec-Names

以上是关于如何进行不区分大小写的graphql查询?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring CrudRepository 进行不区分大小写的查询

如何使用 Django 模型进行不区分大小写的查询

使用 Amazon Dynamodb 进行不区分大小写的查询

如何在SQL中实现区分大小写的查询

MySQL如何解决MySQL中查询不区分大小写的问题

Oracle 如可控制查询不区分大小写?