0

重複の可能性:
左側の varchar を特定の長さにパディングする最も効率的な T-SQL の方法は?

SQLステートメントを使用した構文のトリミングに問題があります。これは、私が惨めに失敗している私のSQLステートメントです:

 SqlCommand command = new SqlCommand("SELECT PID = TRIM([PID] & Right("00000000" & TRIM ([PID]),8) & ",END"), FROM dbo.MDRMASTER WHERE PARENTPID = @PARENTPID",con);

ご覧のとおり、私はあらゆる場所で実験を行ってきましたが、SQL ステートメントを解体する前に、返された値は次のとおりです。

 123456123456123456

これを返したい:

 00123456,00123456,00123456,END

では、値をカンマで区切り、ステートメントの最後に単語を追加し、値を特定の形式に並べ替えるための適切な構文は何ですか。たとえば、数字はすべて 8 桁である必要があります。戻り値が 00000123 か 01234567 かに関係なく、正しい方向へのヘルプまたはポイントをいただければ幸いです。

4

1 に答える 1

1

このために機能するSQLは

DECLARE @pidList VARCHAR(2000);

SELECT @pidList = COALESCE(@pidList + ',', '') + REPLICATE('0', 8 - DATALENGTH(MDRMASTER.PID)) + MDRMASTER.PID
FROM dbo.MDRMASTER
WHERE MDRMASTER.PARENTPID = @PARENTPID;

SELECT @pidList + ',END' AS PID;

残念ながら、これをすべて1つの文字列でSqlCommand()オブジェクトに渡すことをテストすることはできませんが、セミコロンで区切って1つの文字列にコマンドを配置すると、なぜ機能しないのかわかりません。

于 2012-05-01T17:01:23.290 に答える