我想要做的是這樣的:使柱長度列的最大長度在另一個數據庫
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. –