And*_*son 29 sql t-sql sql-server sql-server-2005
我有一个名称和地址表,其中包括一个邮政编码列.我想从邮政编码中删除空格并选择与特定模式匹配的任何空格.我在SQL Server 2005上的T-SQL中尝试这个(简化了一下):
SELECT Replace(Postcode, ' ', '') AS P
FROM Contacts
WHERE P LIKE 'NW101%'
Run Code Online (Sandbox Code Playgroud)
但我得到以下错误;
Msg 207, Level 16, State 1, Line 3
Invalid column name 'P'.
Run Code Online (Sandbox Code Playgroud)
如果我删除WHERE子句,我会得到一个没有空格的邮政编码列表,这就是我想要搜索的内容.我该怎么做呢?我究竟做错了什么?
Ode*_*ded 40
不要直接P在WHERE子句中使用别名().
您可以REPLACE在WHERE子句中再次使用相同的逻辑:
SELECT Replace(Postcode, ' ', '') AS P
FROM Contacts
WHERE Replace(Postcode, ' ', '') LIKE 'NW101%'
Run Code Online (Sandbox Code Playgroud)
或者使用别名子查询,如Nick的答案中所述.
Nic*_*ver 12
如果你包装查询,你可以引用这种方式,如下所示:
SELECT P
FROM (SELECT Replace(Postcode, ' ', '') AS P
FROM Contacts) innertable
WHERE P LIKE 'NW101%'
Run Code Online (Sandbox Code Playgroud)
一定要给包装选择一个别名,甚至不用(SQL Server不允许没有一个IIRC)