このカテゴリにはデータベースMicrosoft SQL Serverの技術的な内容を記述しています。
SQLServerでSELECT文でIFを使う
SQLSeverでは日付を指定して曜日を取得するにはDATEPART関数を利用すれば取得することができます。また返される値は各曜日を表現する数値なのでCASE WHENなどを用いて編集してあげると見やすい形になります。
SQLServerで曜日を表示させる方法
SQLSeverでは日付を指定して曜日を取得するにはDATEPART関数を利用すれば取得することができます。また返される値は各曜日を表現する数値なのでCASE WHENなどを用いて編集してあげると見やすい形になります。
SQLServerのSTRING_SPLITで指定した文字で文字列を分解する方法
SQLServer2016以降では指定された文字で文字列を分解して取得するにはSTRING_SPLITを使えば簡単に行うことができます。ただし、取得されるSELECT文のカラム名はvalueに固定されています。
SQLServerのTrim関数は1度に複数の文字を前後から取り除ける
SQLServer2017で実装されたTrim関数は前後の半角空白文字を取り除けるだけではなく、複数の文字を1度に取り除ける強力なものになっています。これまで複雑にRTRIM関数、LTRIM関数を組み合わせていた処理がTRIM関数1つで書けるようになりました。
SQLServerのCASE WHENを使って年月ごとのデータを取得する
SQLServerのCASE WHENを使って年月ごとのデータを取得するには該当年月を100で割った余りでデータを振り分けます。
SQLの副問合せを使ってテーブルのかわりをする
SQLの副問い合わせ(サブクエリ)とは、SELECTした結果を別のSQLで使うことを言います。今回は副問合せ(サブクエリ)を使ってテーブルのかわりを実現してみます。
SQLServerのVIEWに対するデータの挿入・更新
SQLServerでは複数のテーブルを結合した状態を1つのテーブルのように扱えるVIEWという機能があり、VIEWを使うと複雑なSELECT文を一度書くだけでそのSELECT結果自体をテーブルのように扱えます。INSERTやUPDATEもそのデータが影響を与えるテーブルが1つの場合は通常のテーブルと同じようにINSERTやUPDATEが行えます。
SQL ServerのSELECTとSETで変数代入時の違い
SQL Serverで変数を代入する場合には「SELECT」「SET」のどちらでもできますが、それぞれに少しだけ違いがあります。その違いを理解したうえで使用しないと、思わぬ不具合を発生させることにも成り兼ねないので注意しましょう。
直前のINSERTで自動採番したIDENTITY列の値を取得する
SQLServerのIDENTITY属性の列をテーブルにデータをINSERTし、その挿入された値を直前に挿入された値を取得するには「@@IDENTITY」を利用すれば取得できます。
SELECTで別名・エイリアスが使えるかはSQL実行順序で決まる
SELECT文の中で別名(エイリアス)が使える、使えないは、それぞれの句のSQL実行順序で決まります。SQLServerの実行順序はFROM、ON、JOIN、WHERE、GROUP BY、WITH CUBE または WITH ROLLUP、HAVING、SELECT、DISTINCT、ORDER BY、TOPの順です。
SQLServerで外部キー(FOREIGN KEY)の一覧情報を取得する方法
SQLServerで外部キー(FOREIGN KEY)の情報を取得するSQLはsys.foreign_keysを元に検索すれば可能になります。
SQLServerで一時的に外部キー(foreign key)制約を無効にする方法
SQLServerでテーブルに設定されている外部キー(foreign key)を一時的に無効にしたり有効にしたりするにはALTER TABLE文を使って行います。
SQLServerでVIEWの作り方
SQLServerではVIEWと呼ばれる仮想的なテーブルを作成することができます。VIEWの作成方法を解説します。
SQLServerに新規のデータベースを作る方法
SQLServerに新規のデータベースを作成するにはSQL Server Management Studio(SSMS)を利用すると簡単に作成できます。
SQLの基本-INSERT,UPDATE,SELECT,DELETE-
アプリケーションでSQLを利用してデータベースのデータを扱う上で重要な構文が「INSERT,UPDATE,SELECT,DELETE」の4つです。その基本を解説します。
SQLServerのLEN関数は文字列の後ろの空白は無視する
SQLserveのLEN関数は文字数をカウントしてくれるが後ろの空白は無視される。
SQLでPIVOTを使って行と列を入れ替える(縦横変換する)方法
SQLServer(T-SQL)では行と列の入れ替え(縦横変換)はPIVOTを利用すると簡単に行えます。
SQLServerのテンポラリテーブル(一時テーブル)の作り方
SQLServerのテンポラリテーブル(一時テーブル)の作り方と使い方。
SQLServerでカーソルを使う方法
SQLServerにはCURSOR型」が用意されています。「CURSOR型」の使い方を解説します。
SQLServerの関数(ストアドファンクション)で引数を省略する方法
SQLServerで関数(ストアドファンクション)に引数を持たせることができるのですが、その引数の値を指定せずにDEFAULT(規定値)で実行することもできます。
SQLServerでSplit関数のようにカンマ区切りの文字列を分割して取得する方法
SQLServer2016以前のバージョンでは指定した文字で文字列を分割する「split」関数が実装されていません。
SQLServerで指定した月の月末日付を求める方法
SQLServerで指定した月の月末日付を求めるには「EOMONTH」関数を使うと簡単に取得できます。
Microsoft SQL Sever 2017を無料で使う方法
SQL Server 2017には無料で利用できる小規模開発用(Express)と開発者に向けたテスト環境構築および技術検証用(Developer)ョンが用意されています。
SQLServerで断片化したインデックスを再構築する方法
SQLServerでインデックスを再構築すると断片化したインデックスが解消され、処理スピードが速くなることがあります。断片化したインデックスを再構築しインデックスるの断片化を解消する方法です。
SQLServerのテーブルにCSVファイルをインポートする方法
SQLServerのテーブルにCSVファイルをインポートする方法です。
SQLServerで取得した値を3ケタのカンマ区切りで表示する
SQLServerで取得した値を3ケタずつのカンマ区切りの表示に変更する方法です。
SQLで検索結果を縦横変換する
SQLで取得した各行を一定のくくりで横に表示させたいときがあります。そんなときはSQLで縦横変換を行います。
SQLServerではTRIM関数がありません
SQLServerではOracleやMySQLなどでサポートされている空白を取り除くTRIM関数がないので、カラムの前後の空白を取り除くにはLTRIM関数とRTRIM関数を組み合わせて実現します。※SQLServer 2017でTRIM関数が追加されました。
SQLで存在しない行を生成し固定行数で処理したい時に役立つ方法
帳票データなどで登録されているデータ数に左右されず、固定行数でデータを取得したい場合があります。キー内で複数行のデータを管理しているデータから固定の行数分情報を作り出して取得するSQLです。
SQLServerで「WITH ROLLUP」を使って小計、総合計を出力する
SQLServerでは「WITH ROLLUP」を利用すると簡単に小計、総合計を出力することができます。そのサンプルです。
SQLServerのbcpコマンドを使ってBULK INSERT用のフォーマットファイルを出力する
SQLServerのbcpコマンドを使ってBULK INSERT用のフォーマットファイルを出力を出力することができます。フォーマットファイルの作成方法です。
SQLServerのテーブルに設定されているインデックスをSQLで検索する
SQLServerでテーブルに設定されているインデックスを検索するにはsys.indexesから情報をSelectします。
SQLServerでテーブルのプライマリキー(PK)を取得する(SQL編)
SQLServerでテーブルのプライマリキー(PK)をSQLで取得します。
指定した列名がどのテーブルで使用されているか検索するSQL
指定した列名がどのテーブルで使用されているか検索するSQLです。列名の変更や型の整合性などを見る時にすべてのテーブルから列名を探しだすと楽にチェックすることができます。
指定した値と同じ場合はNULLを返すNULLIF関数
SQLServerには使いどころがいまいち不明な関数があります。そのなかの一つ「NULLIF()」。NULLIF()は2つの引数を持ち、その引数の値が同じならNULL、違うなら第1引数の値を返します。
SQLで大文字、小文字変換を行う
SQLで大文字⇔小文字変換を行うには「UPPER関数」と「LOWER関数」を利用します。「UPPER関数」と「LOWER関数」の利用方法を解説します。
SQLServerで文字列を反転させるREVERSE関数
SQLServerで文字列を"012345"を後ろから並び変えて"543210"のように反転させるにはREVERSE関数を利用します。REVERSE関数の利用法を解説します。
SQLServerでストアドプロシージャ名を取得する
SQLServerでエラーログなどを出力する際にそのストアドプロシジャ名が欲しい時があります。そんな時に役立つSQLを作って見ました。
ALTER TABLEで既存のテーブルのプライマリーキー(主キー)を変更する
ALTER TABLEで既存のテーブルのプライマリーキー(主キー)を変更します。
SQLServerで累積値(累積比)を求める
SQLServerで累積値(累積比)を求めるにはちょっとした工夫が必要です。