当前位置: 首页 > 知识库问答 >
问题:

等效于赛贝斯ASE中的与子句

景元忠
2023-03-14

似乎 WITH 仅在 Sybase SQL Anywhere 中受支持:http://dcx.sybase.com/1100/en/dbusage_en11/commontblexpr-s-5414852.html

…但不在Sybase ASE中:(

有人可以建议Sybase ASE中是否存在等效的构造吗?还有其他方法可以实现东西而不是使用 WITH,但我们计划重新调整一些动态生成的 SQL 的用途,以便在 Sybase 中运行,并且非常需要对 WITH 或接近该语法的支持。

共有1个答案

卫博学
2023-03-14

ASE不支持公共表表达式(例如WITH子句)。

(显而易见的)解决方法是#temp表、视图、具体化视图(也称为预计算结果集)、表变量 (ASE 16.0 SP02),并在有限的情况下可能派生表和/或(相关)子查询。

注意:我不与SQL任何地方工作,所以不确定这在技术上是否可行,但fwiw…

我认为可能有一种方法可以将代理表从SQLAnywhere设置为ASE,其想法是在SQLAnyWhere中运行CTE/with查询。

当然,即使这在技术上是可能的,您也会看到维护SQL Anywhere数据库的额外开销,并且这种服务器间查询的性能可能是不可接受的(例如,将所有数据从ase拖到SQL Anywhere中,实际上是为了实现CTE)。

 类似资料:
  • 我想生成从0到9000000的数字。在Oracle中,我可以使用下面的代码。如何在赛贝斯ASE中做到这一点? 这是在甲骨文中: 如何在Sybase ASE中实现这一点? 我不能创建一个表并添加一个标识,因为我需要从1到9000000的数字,所以一个表会很复杂。有查询可以做到这一点吗?

  • 我在赛贝斯ASE 15.5中使用赛贝斯Central工具创建了几个表。我已经将列定义为主键(int数据类型),不知何故,该列也变成了标识。 现在,从赛贝斯中心,我无法从该列中删除标识,即使该表或任何引用的表中没有数据。 有人能帮忙吗?我不想使用Set IDENTITY_INSERT,我想从本专栏中完全删除标识行为。 谢啦

  • 如何在Sybase ASE 15表格设置中删除列。 我尝试了一些,但没有用: 以及查看Sybase文档,它没有为我的问题提供解决方案。 数据库my_db未启用选择进入数据库选项。无法执行带有数据副本的ALTER TABLE。设置选择进入数据库选项并重新运行。

  • 全部的 这个标题几乎说明了一切。我在这里查看,但找不到任何有关模式的信息。 有人能帮我照个灯吗? 我知道MS SQL Server使用“schema.name”来引用数据库中的表,但对于Sybase我不确定。 蒂娅! 编辑: 我想我应该更具体一点。 我知道在MS SQL Server中可以修改表所有者,但您仍然可以通过“从sysobjects so、sysusers su、sys.tables t

  • 赛贝斯16配置hp-Rom8编码(请勿询问)不连接没有指定CHARSET=上的连接字符串,像这样: jdbc:sybase:Tds:10.0.0。X:5000/db_名称?字符集=iso_1 这是因为java不支持hp-roman8。但当我加入JCharset包时,情况就变了。 在包含它(JCharset)之后,jConnect不使用CHARSET=参数进行连接,但字符串无论如何都会出错。 SyB

  • 我有一列毫秒格式的纪元。我需要将它们转换为另一列datetime,包括毫秒精度。 我已经尝试了(与铸造,转换等)的各种组合: 我不断得到: 在之前的帖子中有一些评论,但没有一篇是关于ASE的。 需要得到1610309854301:这等于另一列中的这个。2021年1月10日,星期日20:17:34.301 这可以在ASE 16.1的SQL中完成吗? 非常感谢。