使用带有orientdb的函数选择带边缘过滤器的查询

时间:2016-08-18 15:29:02

标签: orientdb

模式

  

客户 - > (边缘)Ownes - >车辆{vehicle_number}

试图通过下面的数字来查询“拥有”车辆的客户记录并且它有效。 ('in'和'contains'都工作正常)

select from Customer where "KL-01-B-8898" in  out("Ownes").vehicle_number

我想做同样的查询,但使用不区分大小写的搜索,如下所示,但返回'0'记录

select from Customer where "kl-01-b-8898" in  out("Ownes").vehicle_number.toLowerCase()

我更改了下面的查询并返回了行。是否可以在上面的查询中使用像'toLowerCase'这样的函数,而不使用子选择?

select from Customer where @rid in (select in("Ownes").@rid from Vehicle  where vehicle_number.toLowerCase() ="kl-01-b-8898")

1 个答案:

答案 0 :(得分:1)

您可以使用:

select from Customer 
let $a= ( select number.toUpperCase() from (select out("Ownes").vehicle_number as number from $parent.$current unwind number))
where "KL-01-B-8898" in first($a).number

这不起作用:

select from Customer where "kl-01-b-8898" in out("Ownes").vehicle_number.toLowerCase()

因为

out("Ownes").vehicle_number

返回String

列表

这有效:

select from Customer where @rid in (select in("Ownes").@rid from Vehicle  where vehicle_number.toLowerCase() ="kl-01-b-8898")

因为vehicle_number是一个字符串

请参阅文档:http://orientdb.com/docs/last/SQL-Methods.html#bundled-methods