我正在尝试首先连接两列,然后使用CHARINDEX
该计算列执行搜索操作,如下所示:
SELECT CONCAT(FirstName, ' ', LastName) as FullName FROM Customer WHERE CHARINDEX('Martin', FullName, 1) <> 0
但是,我无法在CHARINDEX
函数内使用计算列 (FullName)。
我得到的错误是:
列名“FullName”无效。
我在这里犯了什么错误?
我正在尝试首先连接两列,然后使用CHARINDEX
该计算列执行搜索操作,如下所示:
SELECT CONCAT(FirstName, ' ', LastName) as FullName FROM Customer WHERE CHARINDEX('Martin', FullName, 1) <> 0
但是,我无法在CHARINDEX
函数内使用计算列 (FullName)。
我得到的错误是:
列名“FullName”无效。
我在这里犯了什么错误?
除了 Scott 的回答,您也可以将 concat 移动到 where 子句。
或者,作为派生表。
至于为什么不能在子句中使用别名,
WHERE
是因为查询不以. 在选择列列表之前对SELECT
您进行评估。WHERE
尝试将您的逻辑封装
CONCAT
在一个公共表表达式中,如下所示:您可以单独检查两者。