2014-09-01 68 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

相关问题