我打印出一堆动态创建的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 .....'
由于
答案 0 :(得分:4)
我相信你想要的是SQL 2005上提供的REPLICATE
函数。
PRINT 'ALTER TABLE ' + @TableName + REPLICATE(' ', 50 - LEN(@TableName)) + ' WITH NOCHECK ADD CONSTRAINT .....'
答案 1 :(得分:1)
您可以使用SPACE功能:
PRINT 'ALTER TABLE ' + @TableName + SPACE( 50 - LEN(@TableName)) + ' WITH NOCHECK ADD CONSTRAINT .....'
如果它不是您要插入的空格,则可以使用REPLICATE(varchar,int)。
答案 2 :(得分:1)
您需要使用REPLICATE功能以及DATALENGTH:
PRINT 'ALTER TABLE ' + @TableName + REPLICATE(' ', 50 - DATALENGTH(@tablename)) + ' WITH NOCHECK ADD CONSTRAINT .....'