2014-09-01 70 views
4

將nvarchar(max)轉換爲nvarchar(n)並指示有更多數據的最快方法是什麼?使用省略號將nvarchar(max)截斷爲nvarchar(n)

如:轉換列地址來爲nvarchar(100),如果地址大於100個字符,然後用替換最後3個字符「...」

+0

那麼,這將是97個字符和「...」? – Lamak 2014-09-01 21:13:03

+0

@Lamak是的,這是正確的 – James 2014-09-01 21:18:21

+0

應該在字符數中包含尾部空格嗎? – Laurence 2014-09-01 21:27:43

回答

3
UPDATE t 
SET t.Address = SUBSTRING(t.Address, 1, 97) + '...' 
FROM TableName t 
WHERE LEN(t.Address) > 100; 

ALTER TABLE dbo.TableName 
    ALTER COLUMN Address NVARCHAR (100); 
+1

這應該如何工作?,首先將列轉換爲NVARCHAR(100),然後檢查列是否超過100個字符? – Lamak 2014-09-01 21:22:02

+0

不應該ALTER TABLE後更新? – James 2014-09-01 21:22:41

+0

@James它應該,'ALTER TABLE'會拋出一個錯誤,否則 – Lamak 2014-09-01 21:23:37

2
UPDATE Table 
SET [Address] = CASE 
         WHEN LEN([Address]) > 100 
         THEN CAST([Address] AS NVARCHAR(97)) + N'...' 
         ELSE CAST([Address] AS NVARCHAR(100)) 
        END 

現在更改數據類型因爲所有超過100個字符的數據將在上述語句後截斷。

ALTER TABLE TableName 
ALTER COLUMN [Address] NVARCHAR(100) 
GO 
+0

它不應該是'當LEN([地址])> 100'嗎? – Lamak 2014-09-01 21:27:07

相關問題