2012-03-12 1 views
0

私は列VALUE01とVALUE02に2つの文字列を入れて、この新しい列に検索文字列が存在するかどうかを検索しようとしています。私は以下の両方の文を試しました。 「無効な列名「完了」」というエラーが表示されます。これらのステートメントの何が間違っていますか?私はMS SQL Serverを使用します。SQL文の結合テキスト列エラー

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

何データベースのブランドを? SQLサーバー? – danihp

答えて

3

WHERE句には列エイリアスを使用できません。

試してみてください。

SELECT COALESCE(VALUE01, '') + COALESCE(VALUE02, '') AS Complete 
FROM dbo.Data 
WHERE (COALESCE(VALUE01, '') + COALESCE(VALUE02, '')) LIKE 'Test'" 
+0

おそらく、performaceの問題のためには、 'VALUE01は' Test '、VALUE02は' Test 'のように'好ましいでしょう。あなたが同意する? – danihp

+0

グレート、あなたはそれに私を打つ:) –

+0

@ダニフ - 良い点。私は正直であるとは確信していませんが、SSMS上にClient Statisticsを含め、2つの異なるクエリをテストする価値があるかもしれません。 – Curt

0

あなたは

次のクエリを使用して、カートとアミットのに加えて

SELECT COALESCE(VALUE01, '') + COALESCE(VALUE02, '') AS Complete FROM dbo.Data WHERE COALESCE(VALUE01, '') + COALESCE(VALUE02, '') LIKE 'Test' 
1

を必要とする何をすべきwhere句で列の別名を使用することはできませんアプローチでは、CTEまたはインラインビューを使用して、結果をクエリすることもできます。

SELECT * FROM 
(SELECT COALESCE(VALUE01, '') + COALESCE(VALUE02, '') AS Complete 
FROM dbo.Data) ILV 
WHERE Complete LIKE 'Test' 

(あなたが=使用したかのようにところで、ワイルドカードなしLIKE使用すると、同じ結果が得られます - 。、あなたが条件WHERE Complete LIKE '%Test%'を使用する必要があり、文字列TestComplete複合列の任意の場所に表示されるかどうかをチェックするために)