ラベル SQL server の投稿を表示しています。 すべての投稿を表示
ラベル SQL server の投稿を表示しています。 すべての投稿を表示

2012年6月16日土曜日

SQL Server文字列を日付形式にキャストする

ここを参考に書いたんだけど、
SELECT CONVERT(datetime, '20080102', 112)

引用の最後の112って何ぞ?ってなって調べた。
http://msdn.microsoft.com/ja-jp/library/ms187928.aspx

msdsによると国ごとのフォーマットを指定してる様子。

2012年6月15日金曜日

SQL ServerにCSVをインポートする

ここを参考にばるくいんさーとというのをやってみた。


BULK INSERT テーブル名 FROM 'インサートしたいファイルのパス.csv'
   WITH (
      DATAFILETYPE = 'char',
      FIELDTERMINATOR = ',',
      ROWTERMINATOR = '\n'
);
char型、カンマ区切り、改行文字かな。

CASE文-SQLで条件分岐してみる

ここを参考にCASE文を使ってみた。
今まではプログラム側で対応してたけどこれ使いこなしたほうが便利。

SQLの結果をコピーするときに列名も取得する

ここをそのまま実行しただけなのでリンク先を見ましょう。
環境はSQL SERVER2005です。

2012年5月21日月曜日

SQLServerのテーブルをcsvに出力する


ここを参考にSQL Serverのテーブルをcsvに出力してみる
bcp DB名.dbo.テーブル名 out "c:\log.txt" -c -t, -r\n -S サーバ名 -U ユーザ名 -P パスワード
-tで区切り文字
-rで改行文字

2012年5月10日木曜日

windowsのbeep音を黙らせる

vb.netやSQL Serverを使っているとbeep音がうるさくてsan値が危ういので黙らせる方法



上記を参考に

デバイスマネージャ>ツールバーの表示>非表示のデバイスの表示>プラグアンドプレイではないドライバー>Beepのプロパティ>ドライバータブ

ここから停止や無効に設定すれば静かなものである。

2012年5月9日水曜日

VBでオブジェクトのデータ型を確認する

VB.net 2005でSQL serverとやりとりしてて空の値(null)が返されたんだけど、vb的にはnullではなくSystem.DBNull型なのだそうです。

if Not (TypeOf source("CometGarradd").rows(0)("IonTail") Is System.DBNull) Then
End If

上記のようにすると条件として使えました。

TypeOf 変数名 Is データ型

とすると変数の方を確認できた。

ギャラッドさんにイオンテイルがあるかどうかは知りませんw

TRUNCATEとRTRIM

文字数が違うchar型フィールドを比較するときにつまったのでメモ
DBはSQL Serverです

SELECT
   darlin
FROM
    DB1,DB2
WHERE
    DB1.name = RTRIM(DB2.name)

DB1.nameがchar(5)、DB2.nameがchar(10)であるときDB2.nameの右側から5文字分の空白をトリミングしてくれます。
ちなみに左からトリミングしたい場合はLTRIM、左右の空白を削る場合はTRIMでよいそうです。


ついでにこれを覚えた。
TRUNCATE TABLE DBNAMEテーブルの中身を確認せずに削除するのでDELETEより早いらしいです。

2012年5月2日水曜日

DateTime型への変換とDBでの比較

vb2005からSQLserver使っててDateTimeの比較で詰まったのでメモ



まずはDateTime型にするところから。

vb2005で日時の文字列をDataTime型に変換するときは以下のように行う。
Dim dt As DateTimedt = DateTime.ParseExact("2012/05/02 19:04:30", "yyyy/MM/dd HH/mm/ss", Nothing)    'DateTime.ParseExact(変換したい日時, フォーマット, フォーマットと日時の対応表?)
この時、文字列の書式とフォーマットの書式が一致していないと怒られる。

SQLで比較するときはすでにDateTime型なので

Dim query As String = ""query = query  + " SELECT COUNT(*) " + vbCrLfquery = query  + " FROM ZIEX  " + vbCrLf query = query  + " WHERE YMDT >= " + dt + " " + vbCrLf


などとする。
dtがString型のままの場合は以下のようにシングルクォーテーションで囲まなければならない。


Dim query As String = ""query = query  + " SELECT COUNT(*) " + vbCrLfquery = query  + " FROM  EAGLE " + vbCrLf query = query  + " WHERE YMDT >= '" + dt + "' " + vbCrLf