目的
雑多に書いていると探すのに手間がかかるためジャンルによって分けることにしました。
クエリのテーブル指定がフルパス(DB名.スキマー名.テーブル名)になるのを省略名(テーブル名)で扱いたい
-
原因
DB用のカレントディレクトリのようなもの? 言うとすればカレントテーブルの初期値が上の階層に行ってしまっているのではないのだろうか…。
→カレントスキマーって言うらしい(うろ覚え) -
対策
以下のクエリを先頭に追加するだけ。
Use DB名
Go
通常クエリ
- 結論
これって、カレントスキマーを設定すれば良いだけなんじゃないだろうか…
クエリの結果をcsvで出力する。
わりと便利。
試験所とかの変更前データを収集するのに使える
参考サイト
SQLServerでselectの結果をCSVで出力する方法。
Select Top句
クエリの結果の出力数を制限するクエリ。
SELECT TOP 5 * FROM テーブル名
WHERE No >= 100
ORDER BY No
Noが100以上のデータを5個出力……
SELECT TOP句について
SQLの文字型変更で困ったとき
↓以下を参考
SQL Server Data Type Conversion Chart~SQLサーバーのデータ型変換チャート~
ストアド(プロシージャーとファンクション)
クエリを直接書かず使う方法。
SQLの中に記載する関数。
似てるものとしては、VBAのSubのイメージ。
- 引数がない→ストアドプロシージャ
- インサートとかアップデート等の返り値なしで良い処理で使用。
- 引数がある→ストアドファンクション
- セレクト等の返り値が必要な処理で使用する。
何回も使用するクエリ(書き込むクエリ)や、codeが長いときは重宝しそうだ。
クエリだけだからメンテしやすそう
デメリット
-
デバッグで処理の中身が見えない。(ソースがServerに有るので当たり前)
たとえばVB6.0だと↓こんなのが出る(デバッグでストアド呼び出し箇所でステップインすると出る。それ以外ならOK) -
大量にストアドを使うとき命名規則がわかっていないとどれがどれだかわからない。
→ストアドに対して何が引数で何が返り値なのか記載したほうが良い。処理を追うためにわざわざSQL立ち上げるのは手間、業務用低スペならなおさら -
マイナー(個人的な感想)
かなり便利LIKE句
Where句に記載すると部分一致のデータを表示できる
Select * From Table
Where Table.Data Like 'h%'
結果としては
Data |
---|
huga |
hoge |
みたく取得できる。
説明すると
% -> ワイルドカード
となるため
%a%
は、何かしらの文字が前後にあるaのデータ
例〉
aaa
bab
とか
SUBSTRINGについて
文字列出力に対してほしい文字の箇所を取得する。
取得した文字の3文字目から2文字とか…
注意点
あくまで文字判断になるため数字を取得したときは文字に変換してから使用すること。
取得文字を変換するには
CONVERT(型,該当文字)
を使用する
Selecr SUBSTRING(Convert(varchar,123),2,1)
ストアドをCMDなどで流すとき少し便利な目印
InsertとかUPDATEした後に以下のクエリを入れるとチェックしやすい。
大量にあると結構書くのメンドイけど・・・
Select '対象のDB名' As '対象のDB名' , * Top 1 From 対象のDB名
*1チェックしたいテーブルの中身で簡単にわかるのならSelect文のみでいいと思う。
*2コストも気にしないのならTop 1なくてもいい
SQL Server Management Studio の利用状況モニターについて
プロセスから表示できるセッション詳細の最大表示文字数
4551文字(自分で確認しました。)