SQL Server字符串被截断

时间:2012-01-04 17:30:37

标签: sql-server sql-server-2008 sql-server-2005

我有col1的专栏(nvarchar(max))。

我正在尝试

DECLARE @my_string NVARCHAR(max)
set @my_string = N'test'

UPDATE dbo.tab1 
SET col1 = @my_string + ISNULL(col1, N'')

没有运气,我不知道为什么会这样。 @marc_s

col1中的字符串值在250个字符后被截断。这种情况发生在SQL Server 2005和2008中。

3 个答案:

答案 0 :(得分:3)

首先 - 我没有看到你报告的这种行为。如何以及为什么你认为你的列被截断为250个字符?您是否使用工具检查可能截断输出的数据?

您可以检查列的长度:

SELECT col1, LEN(col1) FROM dbo.tab1

真的只有250个字符吗???

另外:你混合了VARCHAR@my_string}和NVARCHARcol1),这可能导致混乱的结果。避免这种情况!

下一步:如果您需要NVARCHAR(MAX),则需要将其他字符串转换为该格式。

试试这个:

DECLARE @my_string NVARCHAR(200)
set @my_string = N'test'

UPDATE dbo.tab1 
SET col1 = CAST(@my_string AS NVARCHAR(MAX)) + ISNULL(col1, N'')

正如我所说 - 在我的测试中,我不需要这样做 - 但也许它适用于你的情况?

答案 1 :(得分:2)

转到菜单 - 查询 - >查询选项 - >结果 - >文字

有一个选项Maximun number of characters displayed in each column,我的默认为256

一旦我将其设置为1000,问题就解决了。

答案 2 :(得分:0)

你在SSMS考试吗?如果是,请检查选项Query Results > SQL Server > Results to Grid - Maximum characters retrieved > Non XML data。是否有250或类似值?