【问题标题】:How can I check if a word is a reserved keyword in Sybase (can't be used as column name)?如何检查一个单词是否是 Sybase 中的保留关键字(不能用作列名)?
【发布时间】:2012-03-22 14:13:26
【问题描述】:

问题:

  • 如何(以编程方式)获取 Sybase 中保留关键字的完整列表?

    具体来说,不能是表中的列名。

  • 另外,如何检查特定标识符是否是 Sybase 中的保留关键字?

背景:

我有一个进程,它接受一个带有标题的逗号分隔文件并加载到 Sybase 中的临时表中。

目标是让临时表列名与文件列名匹配。

如果文件有以保留关键字命名的列,这将失败。

我想在CREATE TABLE 语句失败之前捕捉到这种情况。

注意事项:

  1. 我正在寻找独立于 Sybase 版本的解决方案

    因此“复制 Sybase 参考手册中的所有文字(例如,this for v.12.5)不是一个有效的答案。我完全知道我可以做到这一点。但如果不更改手动列出关键字。

  2. 如果解决方案存在但在早期 Sybase 版本中不可用,我需要与 Sybase 12.5 及更高版本兼容的解决方案

  3. 我也非常清楚如何通过使用我拥有的任何单词创建一个表来执行此操作,捕获 CREATE TABLE 失败,并读取哪个单词失败。如果可用,我正在寻找更优雅的解决方案。

【问题讨论】:

    标签: sybase keyword


    【解决方案1】:

    在谷歌搜索后找到了一条路!

     select name from master..spt_values where type="W"
    

    【讨论】:

    • 在 SQL Anywhere 11 上找不到该表。
    • @maf-soft - SQL Anywhere 不是我认为的普通 Sybase 产品(例如 ASE)
    【解决方案2】:

    首先,在您的配置中打开“quoted_identifier”(设置quoted_identifier on)。然后用双引号转义所有列名。

    这样您就不需要知道哪些是保留字,并且所有列都将具有您希望它们具有的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      相关资源
      最近更新 更多