我正在尝试将两个字符串放在我的列VALUE01和VALUE02中,然后搜索此新列中是否存在搜索字符串。我尝试了以下两个陈述。我收到错误消息“无效的列名称'完成'”。这些陈述有什么问题?我使用MS SQL Server。
SELECT COALESCE(VALUE01, '') + COALESCE(VALUE02, '') AS Complete FROM dbo.Data WHERE Complete LIKE 'Test'"
SELECT (VALUE01 + VALUE02) AS 'Complete' FROM dbo.Data WHERE Complete LIKE 'Test'"
答案 0 :(得分:3)
您不能在WHERE
子句中使用列别名。
尝试:
SELECT COALESCE(VALUE01, '') + COALESCE(VALUE02, '') AS Complete
FROM dbo.Data
WHERE (COALESCE(VALUE01, '') + COALESCE(VALUE02, '')) LIKE 'Test'"
答案 1 :(得分:1)
除了Curt和Amit的方法之外,您还可以使用CTE或内联视图,并查询结果 - 例如:
SELECT * FROM
(SELECT COALESCE(VALUE01, '') + COALESCE(VALUE02, '') AS Complete
FROM dbo.Data) ILV
WHERE Complete LIKE 'Test'
(顺便说一句,使用不带通配符的LIKE
会产生与使用=
相同的结果 - 检查字符Test
是否出现在Complete
复合列中的任何位置,你应该使用条件WHERE Complete LIKE '%Test%'
。)
答案 2 :(得分:0)
您不能在where子句
中使用列别名以下查询应该执行您需要的操作
SELECT COALESCE(VALUE01, '') + COALESCE(VALUE02, '') AS Complete FROM dbo.Data WHERE COALESCE(VALUE01, '') + COALESCE(VALUE02, '') LIKE 'Test'