我正在使用C#SQL Api(DocumentDB)处理Azure Cosmos DB的项目,并且需要知道是否可以使用不区分大小写的WHERE子句 . 从我在网上找到的内容来看似乎还不可能 .
我想写一个像这样的查询:
SELECT l.CustomerName, l.LogDetail
FROM Logs l
WHERE l.CustomerName = 'Acme'
并且返回的客户名称等于“ACME”,“Acme”或甚至“aCmE” . 我不想在扫描中受到性能影响 . 我更喜欢让查询使用索引 .
我知道我可以创建第二个CustomerName字段,其中包含要过滤的所有小写值,但我希望看看是否可以避免这种情况 . 这可能吗?
1 回答
不幸的是,除非它是在过去两个月内添加的,否则 this is not possible .
如果在索引字段上使用ToLower()或ToUpper(),则会导致扫描,因此这不是一个选项 .
一些有效的解决方案就像你说的那样,用一个不区分大小写的字符串添加另一个字段,或者只插入具有特定情况的数据 . 听起来你的数据库不区分大小写,所以为什么不确保这些情况真的不敏感?