SQL Server

【SQL Server】WHERE句では列別名が使用できない。

投稿日:

特に意識はしていなかったのですが、WHERE句では列別名が使用できませんね。

SELECT employee_id as ID, user_name as Name, dept_cd as Dept
FROM emp_list
WHERE ID = ‘100’;

このように、WHERE句で列別名であるIDを使用すると、エラーとなってしまいます。よって、WHERE句には列名である、employee_idを使用しなければなりません。上記のような場合であれば単純に列別名を指定せず、列名を指定すれば良いのですが、次の例の場合は、どうしても列別名を使用したくなります。

SELECT REPLACE(REPLACE(FullPCName, ‘.sql.jpn.org’, ”), SUBSTRING(REPLACE(FullPCName, ‘.sql.jpn.org’, ”), 0, CHARINDEX(’#’, REPLACE(FullPCName, ‘.sql.jpn.org’, ”))+1), ”) as ServerName, operating_system, language
FROM computer_list
WHERE ServerName = ‘server01’

WHERE句に列別名であるServerNameを使用していますが、これではエラーとなってしまいます。よって、次のように記述しなければなりません。

SELECT REPLACE(REPLACE(FullPCName, ‘.sql.jpn.org’, ”), SUBSTRING(REPLACE(FullPCName, ‘.sql.jpn.org’, ”), 0, CHARINDEX(’#’, REPLACE(FullPCName, ‘.sql.jpn.org’, ”))+1), ”) as ServerName, operating_system, language
FROM computer_list
WHERE REPLACE(REPLACE(FullPCName, ‘.sql.jpn.org’, ”), SUBSTRING(REPLACE(FullPCName, ‘.sql.jpn.org’, ”), 0, CHARINDEX(’#’, REPLACE(FullPCName, ‘.sql.jpn.org’, ”))+1), ”) = ‘server01’;

一度ビューなどをかましてからクエリを作成した方が良いかもしれませんね。

広告

広告

-SQL Server


comment

関連記事

no image

リモート接続でSQL Serverのデータベースに接続するには?

問:リモートからSQL Serverのデータベースにアクセスしようとしましたが、アクセスできません。どのようにすれば良いのでしょうか? ? 答:SQL Serverの既定の設定では、ネットワーク経由で …

no image

データベースロールとは?

SQL Serverでアカウントを束ねるコレクション構造をデータベースロールと言い、Windowsで言うとグループみたいなものです。データベースロールにユーザを追加する事で、一括してユーザの権限管理を …

no image

【MCTS:70-431】CREATE LOGINとCREATE USERの使い方

SQL ServerにはCREATE LOGINとCREATE USERという似たようなコマンドが存在しますが、同じものではありませんので注意しましょう。 まず、SQL Serverのデータベースへの …

no image

【SQL Server】複数のインスタンスをインストールするには?

1つのサーバに複数のインスタンスを作成する事ができます。複数のインスタンスを作成するには、SQL Serverのインストーラを実行する必要があります。 「名前付きインスタンス」を選択し、追加するインス …

no image

【MCTS:70-431】SQL Serverのバージョンを確認する方法

SQL Serverのバージョンを確認する方法に、以下のクエリを実行する方法があります。 > SELECT @@VERSION > Microsoft SQL Server 2005 &# …

広告

転職