Fuwafuwa's memorandum

Fuwafuwa's memorandum

Data analysis, development, reading, daily feeling.
MENU

SQL server: EXECで文字列をテーブル名として扱う

ジョブでデータを加工する際テーブル名に日付を入れたい場合などに。

DECLARE @dt NVARCHAR(50) = (		
	SELECT SUBSTRING(CONVERT(NVARCHAR,GETDATE(),121),1,7) )

SELECT @dt
EXEC('
	SELECT *
	INTO [work_research].[dbo].[test_'+@dt+']
	FROM #test ') 

SQL SERVER: テーブル変数の利用

DECLARE @table TABLE 
	( id INT
	, name NVARCHAR(64) )

INSERT INTO @table
VALUES (1,'A'),
	(2,'B'),
	(3,'C')

SELECT *
FROM @table

SQL server: レコードのdelete

DELETE
FROM [table_name]

SQL server: CROSS APPLY

CROSS APPLYでレコード毎に関数を適用。
下記ではレコードごとにカラムtextを特定の文字で分離する。

SELECT id,data
FROM [table_name]
CROSS APPLY
	dbo.Split(text,'/')

SQL server: 一時テーブルへのデータの格納

SQL server における一時テーブルの作成方法。

tempdbに格納され、現在でのセッションでのみ参照可能。
ローカル一時テーブルはテーブルを作成したユーザーのみ、グローバルはデータベース内のすべてのユーザーが参照することができる。
一時テーブルを参照するユーザーのすべてのセッションが切断されると、システムにより暗黙的に削除される。

--一時テーブルが存在するかどうかを確認し、存在する場合のみ削除する
IF OBJECT_ID('tempdb..#table') IS NOT NULL
	DROP TABLE #table 

--ローカル一時テーブルへデータを格納する
SELECT *
INTO #table
FROM [table_name]

--グローバル一時テーブルへデータを格納する
SELECT *
INTO ##table
FROM [table_name]

このカテゴリーに該当する記事はありません。