查询WHERE条件使用STARTS WITH过滤报错

  • nebula 版本:3.1.0
  • 部署方式:分布式
  • 安装方式:源码编译
  • 是否为线上版本:N
  • 硬件信息
    • 磁盘 SSD
    • CPU、内存信息
  • 查询WHERE条件使用STARTS WITH过滤报错 “-1005:Wrong type result, the type should be NULL, EMPTY or BOOL”
GO 1 TO 10 STEPS FROM 'U1' OVER CombinationUD,OrderAssign,OrderCountSplit,OrderTransferSplit  
WHERE $^.UnifyOrder.tenantId STARTS WITH "T1" 
YIELD DISTINCT src(edge) as source, type(edge) as relation, dst(edge) as dest

如果条件换成 == 就可以

GO 1 TO 10 STEPS FROM 'U1' OVER CombinationUD,OrderAssign,OrderCountSplit,OrderTransferSplit  
WHERE $^.UnifyOrder.tenantId == "T1" 
YIELD DISTINCT src(edge) as source, type(edge) as relation, dst(edge) as dest

go 语法中不支持 starts with 的用法, 只在match语句中可以使用

那请问下go语法中使用属性strats with过滤的需求有其他好的替代方法吗?

$^.UnifyOrder.tenantId >= “T1” and $^.UnifyOrder.tenantId < “T2”

类似这样的不知道行不行

可能不太行,tenantId用来表示权限,实际是一个比较长的字符串,相同前缀表示上下级关系,大小于不能表示这层关系。

类似于全文索引里的prefix?go语句可以尝试添加prefix和wildcard这两个,感觉用的还是挺多的 :thinking:

1 个赞

就是想实现属性前缀匹配的过滤

@John

ISSUE 提在这里了,欢迎来补充信息哈。

WHERE $^.UnifyOrder.tenantId IS NOT EMPTY AND $^.UnifyOrder.tenantId STARTS WITH “T1”

1 个赞

回答有误,GO 是支持 starts with的,可以参考楼上的用法

1 个赞

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。