通常は、DBの項目名 As XXXXXと別名にする そんな使い方です。
フィールド名やテーブル名を違う名前として使用可能にするために、
AS演算子を使用してます。
変わった使い方と感じるのが、
ASは別名なので、Null や 0 などに、
Null AS XXXX で、項目作ったり
0 AS XXXX なんて実験をしてみました。
解説とサンプルを実行させて、チェックしてみてください。
<SQL AS演算子で別名管理>
こんにちは、三流プログラマーのKen3です。/* * 1.今回のキッカケ */
掲示板に下記の質問をもらいました ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >投稿者 : SQL初心者 >タイトル : 0 AS やNull ASについて > >タイトルのことなんですが、SQLのSELECT文で"0 AS"や"Null AS"と >使われていることがありますが、アレは何なのでしょうか? >使い方を調べ見ましたが、いまいちです。 > >使っているのはよく見るのですが。 >ご存知でしたら教えてください! ------- 単純な解答だと、AS演算子は別名を定義してます。 なんて本人もわけのわからない解答だったりします。 ※実際のSQL文を載せてもらえると、説明しやすいけど、 メルマガのネタにSQL文を作ってみました。/* * 2.Null AS を使う場面を考えてみる。 */
AS演算子は別名を定義してます。 Null AS かぁ・・・ 項目をNullにしたい・・・う〜ん。 Whereの条件で項目 IS Nullは見かけるけどなぁ。 あっ、前回、UNIONでSELECT文をつなげた時、 列数が合わないと、エラーが発生してました。 Microsoft JET Database Engine エラー '80040e14' ユニオン クエリで選択した 2 つのテーブルまたはクエリの列数が一致しません。 /cgi-bin/test/test076-1.asp, 行 50 そこで、下記のように、 ダミーで商品名を”小計”として逃げてました。 Select T_月別売上.商品CD, T_商品.商品名, 売上4,売上5,売上6,売上7,売上8,売上9 From T_月別売上, T_商品 Where T_月別売上.商品CD = T_商品.商品CD UNION ALL Select Left([商品CD], 1) & 'ZZZZ' AS GroupCD , '小計' AS Dummy商品名 , Sum([売上4]) , Sum([売上5]) , Sum([売上6]) , Sum([売上7]) , Sum([売上8]) , Sum([売上9]) From T_月別売上 Group By Left([商品CD], 1) & 'ZZZZ' Order By T_月別売上.商品CD '小計' AS Dummy商品名とSQL文に入れて、 列の数を合わせてました。 ~~~~~~~~~~~~~~~~ これを、 Null AS Dummy商品名とSQL文に入れて、 空白データを作成してみます。 http://www.ken3.org/cgi-bin/test/test077-1.asp で、 UNIONで表をつなげる時、列数が合わないとエラーになるので、 Null AS DUMMY商品名とダミーの項目を作り列数を合わせる Select T_月別売上.商品CD, T_商品.商品名, 売上4,売上5,売上6,売上7,売上8,売上9 From T_月別売上, T_商品 Where T_月別売上.商品CD = T_商品.商品CD UNION ALL Select Left([T_月別売上.商品CD], 1) & 'ZZZZ' AS GroupCD , Null AS Dummy商品名 , Sum([売上4]) , Sum([売上5]) , Sum([売上6]) , Sum([売上7]) , Sum([売上8]) , Sum([売上9]) From T_月別売上, T_商品 Where T_月別売上.商品CD = T_商品.商品CD Group By Left([T_月別売上.商品CD], 1) & 'ZZZZ' Order By T_月別売上.商品CD と、SQL文を作成してみた。/* * 3.AS演算子は別名を定義してます。 */
FFFFF As XXXXX と、フィールド名やテーブル名を違う名前として使用可能にするために、 AS演算子を使用してます。 T_月別売上テーブル ^^^^^^^^^^^^^^^^^^ 商品CD 売上4 売上5 ・ ・ 売上12 売上1 売上2 売上3 とテーブル、フィールドがあったら、 ↑作成したテーブルイメージ SQL文を作成して、テストしてみる。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Select 商品CD,売上4,売上5,売上6 From T_月別売上テーブル とか、SQLを書くのですが、 AS 演算子を使用して別名のテストをしてみます。 ~~~~~~~~~ Select 商品CD, 売上4 AS 4月売上, DATA.売上5, DATA.売上6 AS 6月売上 From T_月別売上テーブル AS DATA -- 売上4 AS 4月売上 DATA.売上5 DATA.売上6 AS 6月売上 T_月別売上テーブル AS DATA としてみました、結果は? http://www.ken3.org/cgi-bin/test/test077-2.asp でテスト実行すると、 商品CD 4月売上 売上5 6月売上 A1 1 2 3 A2 2 0 4 なんて感じでした。/* * 4. 0 AS XXXX, 1 AS YYYY, 2 AS ZZZZは? */
なるほどね・・ASは別名ですか。 Null AS XXXX で、項目作ったりできるのね。 だとすると、 0 AS XXXXは、ゼロと数字を作るのかい? なんかイヤな予感・・・するんだけど。 じゃ、やってみれは? Select 0 AS XXXX, 1 AS YYYY, 2 AS ZZZZ From T_月別売上テーブル を実行すると、結果は? http://www.ken3.org/cgi-bin/test/test077-3.asp を実行すると、 XXXX YYYY ZZZZ 0 1 2 0 1 2 あらら、出来ちゃいましたね。/* * 5.終わりの挨拶 </HTML> */
今回は、 AS 演算子で、別名を作ることを少し解説しました。 Web上を検索してみると、 NULL asの別のサンプルは、 >SELECT title,author FROM text.clob_books b, >TABLE(db2ext.textsearch('"ガーデニング"','TEXT','IX_AUTHOR', >0,10,CAST(NULL as char))) T WHERE T.primKey = B.id と CAST(NULL as char) キャスト?NULL as char?キャラにしてる? 0 asの別のサンプルは、 >CREATE FUNCTION NotNull(text) RETURNS int4 >AS ' (SELECT 1 as RESULT where $1 is not NULL) union > (SELECT 0 as RESULT where $1 is NULL) > ' LANGUAGE 'sql'; なんか、単なるASで別名・・じゃない使い方のような・・・ SQL系は深いなぁと思いつつ、 なんかキレの無いサンプルだったなぁ・・・ 私の実力もまだまだと感じたAS演算子のテスト処理でした。 何かの参考となれば幸いです。 ASP、VBScript勉強中の三流プログラマーのKen3でした。
ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、
感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]
まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
広告:
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]