别名上的类SQL
这可能吗 我试图对别名执行SQL语句,但出现错误别名上的类SQL,sql,alias,where,Sql,Alias,Where,这可能吗 我试图对别名执行SQL语句,但出现错误 SELECT CASE PERSON_TYPE WHEN 'PER' THEN LAST_NAME ELSE COMPANY_NAME END AS FULLNAME, * FROM PERSON [WHERE FULLNAME LIKE '%AN%'] // Error FULLNAME - INvalid COlumn Name 否则,这就是我
SELECT
CASE PERSON_TYPE WHEN 'PER' THEN LAST_NAME
ELSE COMPANY_NAME
END AS FULLNAME, *
FROM PERSON
[WHERE FULLNAME LIKE '%AN%'] // Error FULLNAME - INvalid COlumn Name
否则,这就是我正在使用的替代方案
WHERE (LAST_NAME LIKE '%AN%') OR (COMPANY_NAME LIKE '%AN%')
谢谢你可以这样做
SELECT *
FROM (SELECT *, CASE PERSON_TYPE
WHEN 'PER' THEN LAST_NAME
ELSE COMPANY_NAME END AS FULLNAME
FROM PERSON ) t
WHERE FULLNAME LIKE '%AN%'
无法访问
中的字段别名,其中
。使用派生表/CTE作为替代,或在中重复整个表达式,其中
。
mysql的诀窍:您可以将其设置为
有无分组方式您有两种解决方案
一种是将全名传递给WHERE子句,如下所示:
SELECT
CASE PERSON_TYPE WHEN 'PER' THEN LAST_NAME
ELSE COMPANY_NAME
END AS FULLNAME, PERSON.*
FROM PERSON
WHERE (PERSON_TYPE = 'PER' AND LAST_NAME LIKE '%AN%') OR (COMPANY_NAME LIKE '%AN%')
SELECT t.*
FROM (SELECT *, CASE PERSON_TYPE
WHEN 'PER' THEN LAST_NAME
ELSE COMPANY_NAME END AS FULLNAME
FROM PERSON ) t
WHERE t.FULLNAME LIKE '%AN%'
另一个是进行如下的内部查询:
SELECT
CASE PERSON_TYPE WHEN 'PER' THEN LAST_NAME
ELSE COMPANY_NAME
END AS FULLNAME, PERSON.*
FROM PERSON
WHERE (PERSON_TYPE = 'PER' AND LAST_NAME LIKE '%AN%') OR (COMPANY_NAME LIKE '%AN%')
SELECT t.*
FROM (SELECT *, CASE PERSON_TYPE
WHEN 'PER' THEN LAST_NAME
ELSE COMPANY_NAME END AS FULLNAME
FROM PERSON ) t
WHERE t.FULLNAME LIKE '%AN%'
不,您不能在WHERE条件下使用别名。顺便说一句,您可能还希望从select语句中删除“,*”。这也会导致错误。据我所知,这是不可能的,至少在SQL Server中是不可能的。当'PER'然后姓氏ELSE COMPANY'以'%AN%'结尾时,您需要使用CASE PERSON\u TYPE,注意这个问题只有sql
标记,您的两个查询都不符合标准sql。关于如何解决此问题的建议:将*
更改为PERSON.*
@onedaywhen done!谢谢你的建议,我使用了来自用户的查询,所以它也会处理它。