传递给LEFT或SUBSTRING函数的长度参数无效

from的是个视图,视图中确实存在好多 LEFT和 SUBSTRING。不写where 是可以查询的。一写where 就报错了。有什么方法可以不修改视图的情况下,我能去where不报错。

报错我觉得是where的条件在视图的SQL里运行了导致的。有没有什么方法让数据库先去运行视图得出结果后把结果当成个实体再去对这个实体where,类似强制设置个执行顺序什么的,我试过用 with as 当临时表,试过select 再套一层,都不行。

1625646499.png

长路漫浩浩 发布于 2021-7-7 16:30 (编辑于 2021-7-7 16:42)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
长路漫浩浩Lv4初级互助
发布于2021-7-12 11:07

跨库视图不能被WHERE,换库就好了

最佳回答
0
Doctor_WeiLv7中级互助
发布于2021-7-7 16:38

基本上做不到,要看的话也得看视图中left部分的参数类型是否支持

  • 长路漫浩浩 长路漫浩浩(提问者) 其实就是数据库为了执行效率,where 条件参与了视图SQL的执行,相当于直接在视图SQL中加了个where。要是能让他先不参与,先查询视图,在视图结果的基础上去where就好了。视图SQL行太多了,不敢动。
    2021-07-07 16:49 
  • Doctor_Wei Doctor_Wei 回复 长路漫浩浩(提问者) 按理来说,视图中写不了参数,试图写完之后就是一张表,然后对于视图的操作就是对一张表操作。 你这种试图估计我没写过
    2021-07-07 17:05 
最佳回答
0
烟尘Lv6高级互助
发布于2021-7-7 16:59

重新写个不带参数的视图吧,然后当成表来用

  • 2关注人数
  • 1149浏览人数
  • 最后回答于:2021-7-12 11:07
    请选择关闭问题的原因
    确定 取消
    返回顶部