SQL语句组合文本列错误

时间:2012-03-12 10:48:32

标签: sql

我正在尝试将两个字符串放在我的列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'"

3 个答案:

答案 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'