OrientDB查询语法使用区分大小写

时间:2016-04-24 15:00:54

标签: orientdb orientdb-2.1

首先,感谢您使用这个非常棒的数据库。对于了解Relational模型的人来说,理解起来非常简单。我可以看到自己在图表中为所有未来的项目建模数据。

现在问题,

我正在尝试使用OrientDB进行数据建模,我遇到了一个奇怪的问题。查询中的字段名称使用区分大小写。

例如,

SELECT FROM appuser WHERE mobile = '1111111111' AND out('userhasrole').rolename CONTAINS 'user'

SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').rolename CONTAINS 'user'

完美无缺。

但是

SELECT FROM appuser WHERE mobile = '1111111111' AND out('userhasrole').ROLENAME CONTAINS 'user'

SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').ROLENAME CONTAINS 'user'

不起作用

请注意,如果“rolename”与确切的字段名称不匹配,则它不起作用。你能否建议这是否正常?

另一件事,可能更重要

SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').rolename CONTAINS 'user'

有效,但

SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').rolename ='user'

不起作用。字段“ rolename ”是一个简单的字符串,但我仍然必须使用CONTAINS才能工作。请对此提出建议。

如果我错过了什么,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

1°回答

SELECT FROM appuser WHERE mobile = '1111111111' AND out('userhasrole').ROLENAME CONTAINS 'user'

SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').ROLENAME CONTAINS 'user'

由于以大写字母写的ROLENAME属性,它们不起作用。 OrientDB区分大小写,您必须正确地写出属性的名称,尤其是当您处于where条件时。

2°Aswer

使用contains而不是'='的事实是因为属性rolename可能是一个列表,因此,它可能包含大量数据,因此你必须使用CONTAINS。

希望有所帮助