我在ASP Classic中有一个使用Firebird数据库的脚本。我想执行一个没有“引号”的查询
现在我必须写下这个:
SQL = "SELECT ""TArticoli"".""IDArticolo"",""TArticoli"".""Desc"" FROM ""TArticoli"";"
我会这样写:
SQL = "SELECT TArticles.IDArticle, TArticles.Desc FROM TArticles;"
第一个被接受,第二个不被接受,我怎么能这样做?
答案 0 :(得分:1)
你做不到。 DESC
是Firebird中的保留字,因此为了能够将其用作列名(或任何其他对象名称),您需要将其括在引号中。
第二个问题是您当前正在使用
SELECT "TArticoli"."IDArticolo","TArticoli"."Desc" FROM "TArticoli"
这意味着您的表名和列名都区分大小写,在这种情况下,引用这些对象名是必需的。不带引号的对象名称不区分大小写,但以大写形式映射到对象名称。这意味着select * from TArticoli
将从名为TARTICOLI
的表中进行选择,而select * from "TArticoli"
则从名为TArticoli
的表中进行选择。
因此,除非您要重命名或重新创建所有表格或列,否则不能够删除引号。您可以做的唯一减少引号数的方法是不在列中添加表名(在显示的查询中没有必要),或者对表使用不区分大小写的别名,例如
SELECT "IDArticolo", "Desc" FROM "TArticoli"
或
SELECT a."IDArticolo", a."Desc" FROM "TArticoli" AS a