我想要做的是这样的:使柱长度列的最大长度在另一个数据库
USE [database]
ALTER TABLE Client
ALTER COLUMN CLientNameShort NVARCHAR(SELECT MAX(LEN([database].dbo.Sites.Sitename))
我也想,如果他们超过一定的长度修剪列,所以它会将列的最大长度设置为其他数据库中的最大值,除非最大列超过500个字符等。如果它超过500,则将该列修整为500.
这可能吗?
问候
编辑:
所以已经结束了与此:
CREATE PROCEDURE alterFieldSize
@column NVARCHAR(MAX), @table NVARCHAR(MAX)
AS
-- DECLARE VARIABLES
DECLARE @sql NVARCHAR(MAX)
DECLARE @fieldLen INT
DECLARE @columnLen INT
-- SET VARIABLES
SET @sql = 'ALTER TABLE Client ALTER COLUMN ' + @column + 'NVARCHAR('+cast(@fieldLen as varchar(20))+')'
SET @fieldLen = (SELECT MAX(LEN(s.Sitename))
FROM [database].dbo.Sites s)
SET @columnLen = (SELECT CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = @column AND TABLE_NAME = @table)
SET @fieldLen = CASE
WHEN @fieldLen < @columnLen
THEN @columnLen
WHEN @fieldLen <=500
THEN @fieldLen
ELSE 500
END
-- Execution
EXEC(@sql)
,并呼吁像这样的程序:
EXEC alterFieldSize @column = 'ClientNameShort', @table = 'Client';
命令成功运行,但它不实际上并没有改变列的最大长度。
任何想法?
*最大值在其他数据库*你的意思记录中的最大值或其他数据库中的列的数据类型大小 –
最大值i是指另一个数据库中的最大值,数据将被插入到我想要更改字段长度的数据库中,因此为什么我想改变每个领域的长度。问题是,有些字段的长度为8000个字符,因为人们决定将某人的生活故事放入地址栏。所以我想修剪那些,如果他们超过最大的字段限制,最有可能是500. –