3

動的に作成された一連の DDL ステートメントを出力し、特定の方法で出力を揃えたいと考えています。

PRINT 'ALTER TABLE ' + @TableName + ' WITH NOCHECK ADD CONSTRAINT CK_' + @TableName + '_' + @ColumnName + '_MinimumLength CHECK (LEN(' + @ColumnName + ') > 0)'

出力:

ALTER TABLE SignType ADD CONSTRAINT CK_SignType_Description_MinimumLength CHECK (LEN(Description) > 0)
ALTER TABLE Person ADD CONSTRAINT CK_Person_Name_MinimumLength CHECK (LEN(Name) > 0)

私が出力したいもの:

ALTER TABLE SignType                WITH NOCHECK ADD CONSTRAINT CK_SignType_Description_MinimumLength                CHECK (LEN(Description) > 0)
ALTER TABLE Person                  WITH NOCHECK ADD CONSTRAINT CK_Person_Name_MinimumLength                         CHECK (LEN(Name) > 0)

文字 x の n だけ文字列をパディングできる関数はありますか。私は次のように使用します:

PRINT 'ALTER TABLE ' + @TableName + PAD(' ', 50 - LEN(@TableName)) + ' WITH NOCHECK ADD CONSTRAINT .....'

ありがとう

4

3 に答える 3

4

REPLICATEあなたが望むのは、 SQL 2005 以降で利用できる機能だと思います。

PRINT 'ALTER TABLE ' + @TableName + REPLICATE(' ', 50 - LEN(@TableName)) + ' WITH NOCHECK ADD CONSTRAINT .....'

MSDN: 複製

于 2009-12-11T18:37:32.393 に答える
1

SPACE 関数を使用できます。

PRINT 'ALTER TABLE ' + @TableName + SPACE( 50 - LEN(@TableName)) + ' WITH NOCHECK ADD CONSTRAINT .....'

挿入したいスペース以外の場合は、REPLICATE(varchar, int) を使用できます。

于 2009-12-11T18:37:38.540 に答える
1

DATALENGTH とともにREPLICATE関数を使用する必要があります。

PRINT 'ALTER TABLE ' + @TableName + REPLICATE(' ', 50 - DATALENGTH(@tablename)) + ' WITH NOCHECK ADD CONSTRAINT .....'
于 2009-12-11T18:39:35.633 に答える