我有一个关于国家表的问题。它有json类型的“data”。
select country.countryNo,country.population from country where json_extract(country.data,'$."stateCount"')="23" COLLATE NOCASE ;
这无法给出json在模型中具有statecount而不是statecount的结果我用错了collate nocase吗?
qlfbtfca1#
你误解了 COLLATE NOCASE . 它实际上适用于前面的比较运算符(这里, '=' ). 所以在查询中,它会比较 json_extract() 反对 '23' 不区分大小写—正如您所同意的,这并没有什么区别。另一方面,json键本质上是区分大小写的。如果要搜索具有不同大小写的json键,则需要枚举它们:
COLLATE NOCASE
'='
json_extract()
'23'
where json_extract(country.data,'$.stateCount') = 23 or json_extract(country.data,'$.StateCount') = 23
旁注:如果给定键下的json值数据是数字, json_extract() 提供一个数值,可以直接与数字进行比较。
1条答案
按热度按时间qlfbtfca1#
你误解了
COLLATE NOCASE
. 它实际上适用于前面的比较运算符(这里,'='
). 所以在查询中,它会比较json_extract()
反对'23'
不区分大小写—正如您所同意的,这并没有什么区别。另一方面,json键本质上是区分大小写的。如果要搜索具有不同大小写的json键,则需要枚举它们:
旁注:如果给定键下的json值数据是数字,
json_extract()
提供一个数值,可以直接与数字进行比较。