我有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中。
答案 0 :(得分:3)
首先 - 我没有看到你报告的这种行为。如何以及为什么你认为你的列被截断为250个字符?您是否使用工具检查可能截断输出的数据?
您可以检查列的长度:
SELECT col1, LEN(col1) FROM dbo.tab1
真的只有250个字符吗???
另外:你混合了VARCHAR
(@my_string
}和NVARCHAR
(col1
),这可能导致混乱的结果。避免这种情况!
下一步:如果您需要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或类似值?