0

我正在使用这个 SQL:

SELECT sys_tbldef_desc as tbldef_desc
FROM sys_tbldef
WHERE UPPER(tbldef_desc) = UPPER('a tbldef desc')

我得到这个错误:

Error at line 1 - Dynamic SQL Error
SQL error code = -206
Column unknown
TBLDEF_DESC

有谁知道解决方案?

4

3 回答 3

5

你不能使用ALIASonWHERE子句。SQL操作顺序如下

  • FROM 子句
  • WHERE 子句
  • GROUP BY 子句
  • HAVING 子句
  • SELECT 子句(别名发生在这里
  • ORDER BY 子句

WHERE子句在该子句之前首先执行SELECT。您应该改用列名。例如:

SELECT sys_tbldef_desc as tbldef_desc
FROM sys_tbldef
WHERE UPPER(sys_tbldef_desc) = UPPER('a tbldef desc')

如果您真的想使用ALIAS,则需要子查询,例如:

SELECT tbldef_desc
FROM
(
    SELECT sys_tbldef_desc as tbldef_desc
    FROM sys_tbldef
) a
WHERE UPPER(tbldef_desc) = UPPER('a tbldef desc')

但我更喜欢第一个。

于 2013-01-02T08:26:21.543 回答
2

您不能在 WHERE 子句中使用别名,您的查询应该是,

SELECT sys_tbldef_desc as tbldef_desc
FROM sys_tbldef
WHERE UPPER(sys_tbldef_desc) = UPPER('a tbldef desc')
于 2013-01-02T08:26:41.270 回答
1

我找到了解决方案:

SELECT *
FROM sys_tbldef
where UPPER(case when sys_tbldef_trnslt_desc is null
then sys_tbldef_desc else sys_tbldef_trnslt_desc end) = UPPER('a table desc')
于 2013-01-02T10:01:24.057 回答