- PR -

SQL文の連結

1
投稿者投稿内容
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2009-01-09 17:34
 こんばんは。

SQLServer2005のSQL文について1つ教えて下さい。

SQL文をループ処理で連結させたいのですが
どうしてもうまくいきません。

@CNT int,
@SQL varchar(100),
@SQL2 varchar(5000)

SET @CNT = 1

WHILE @CNT < 3
BEGIN
SET @SQL = 'AA AS BB,'
SET @SQL2 = @SQL2 + @SQL
SET @CNT = @CNT + 1
END

として@SQL2は 'AA AS BB,AA AS BB' としたいのです。
実際には@CNTの値をBBの後につけるのですが。

'AA AS BB1,AA AS BB2'とです。

このようなことは可能なのでしょうか?
 
よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2009-01-09 17:49
最初にSET @SQL2 = ''を入れておかないと、NULLに何を足してもNULLになります。
まずはここから。
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2009-01-09 18:03
ありがとうございます。
1歩前進しました。
もう少しお願いします。

DECLARE
@CNT int,
@SQL varchar(100),
@SQL2 varchar(5000)

SET @CNT = 1
SET @SQL = ''
WHILE @CNT < 20
BEGIN
SET @SQL = @SQL + 'AA AS BB' + LTRIM(@CNT) + ','
SET @CNT = @CNT + 1
END

SELECT @SQL
としましたが10番目までしかSELECTで表示されません。

結果を確認したいのですが表示はできないのでしょうか?
ヴァン
常連さん
会議室デビュー日: 2008/03/04
投稿数: 28
投稿日時: 2009-01-09 18:09
こんにちは

@SQL varchar(100)

では足りないのでは?
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2009-01-09 18:32
 すいません。

DECLARE
@CNT int,
@SQL varchar(5000)

SET @CNT = 1
SET @SQL = ''
WHILE @CNT < 30
BEGIN
SET @SQL = @SQL + 'AA AS BB' + LTRIM(@CNT) + ','
SET @CNT = @CNT + 1
END

SELECT @SQL

の間違いです。

でもこれだと24までしか表示されません・・

どうしてなのでしょう?
よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2009-01-09 18:59
「表示されない」というのは、Management Studioでの実行結果のことでしょうか?
もし、「結果をテキストに表示」で実行しているなら、オプションに「各列に表示される最大文字数」というのがあるので増やしてください。
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2009-01-09 19:36
よっしーさん、ありがとうございます。

1

スキルアップ/キャリアアップ(JOB@IT)