是否可以呼叫欄位長度的變數(varchar)。通常nvarchar(max),除了出于數學目的需要數字欄位時,我總是將其用于大多數事情。在桌子很大并且性能受到很大影響之前,這沒關系。
是否可以使用創建列varchar(max),然后運行長度查詢以創建最多字符數(此示例只是一條記錄,因此我并沒有真正過濾最大值。我明白這一點)。然后將該數字存盤到一個變數中并呼叫該變數來創建一個新的 varchar 列?
其他用途可能是將該輸出/結果存盤為其他陳述句的變數。
這可能嗎?
謝謝。
CREATE TABLE Test (
MyCol nvarchar(max)
);
INSERT INTO Test (MyCol)
VALUES ('asdfasdfasdfasdfasdfasdfasdfasdfadfsasdfadfs');
SELECT LEN(MyCol) FROM Test
--44 characters. Store this as output as variable
ALTER TABLE TEST ADD NewMyCol varchar(VARIABLE_HERE?) --LEN from above
UPDATE TEST SET NewMyCol = MyCol FROM test
uj5u.com熱心網友回復:
評論是準確的,對我來說,根據存盤在表中的當前長度添加一列似乎很危險,我并沒有真正看到好處。
然而,因為不管有多少人說這是一個壞主意,人們都會想要這樣做:
DECLARE @len int;
SELECT @len = MAX(LEN(MyCol)) FROM dbo.Test;
DECLARE @sql nvarchar(max) = N'
ALTER TABLE TEST ADD NewMyCol varchar($l$);';
SET @sql = REPLACE(@sql, N'$l$', RTRIM(@len));
EXEC sys.sp_executesql @sql;
這個小提琴中的作業示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/521485.html
標籤:sqlsql服务器
上一篇:將SQL陳述句撰寫為資料透視表?
