我的查询没有返回列中的所有数据

时间:2012-06-25 18:29:59

标签: tsql

我的一个专栏已设置为nvarchar(max)。当我查询该列时,它只返回256个字符。我检查了数据的长度,它有超过7000个字符。

我怎样才能获得所有角色而不是失去任何角色?

# select ValidationKey from UserProductAccountProvider 

2 个答案:

答案 0 :(得分:2)

在SSMS中,选择“工具”菜单,然后选择“选项”,“查询结果”,“SQL Server”,“结果到文本”。将“每列中显示的最大字符数”值从256更改为您想要的数字,最多为8192.单击确定后,将保存设置。在您启动新的查询窗口之前,该设置实际上不会生效。

正如marc_s所说,从你的代码中你将得到全文列。

答案 1 :(得分:1)

在David指出的UI设置旁边,还有两个设置会影响返回的数据量。

2:选择工具菜单,然后选择选项,查询结果,SQL Server,结果到网格。更改值“非XML数据”。此值告诉您可用网格中有多少个字符。你可以用副本来获取它们。看起来默认限制大于剪贴板的限制(我最多获得43kB字符)。

3:工作室中有一个设置可以限制返回的数据量。这是每次会议。可以通过“工具”菜单找到它,然后选择“选项”,“查询执行”。更改'SET TEXTSIZE'的值。可以验证和更改SQL批处理中的值:

SELECT @@textsize;

您可以使用以下方法将其设置为100kB:

SET textsize 102400;

通常,UI设置低约256,但可用的数据更多。

这三个设置都会对您看到(或获得)的内容产生影响。

如果您真的想检查非常大的结果集,可以在消息窗口中打印结果:

DECLARE @s AS NVARCHAR(max);
DECLARE @LineLength AS int = 4000;
-- you might need a cursor when you have many rows;
SELECT TOP 1 @s = large_text FROM ....
WHILE LEN(@s) > @LineLength  BEGIN
    print SUBSTRING(@s,1, @LineLength);
    SET @s = SUBSTRING(@s,@LineLength, LEN(@s));
END