在SQL Server Management Studio中查看SQL CE数据库的所有ntext列文本

Dav*_*eer 6 sql-server ssms sql-server-ce

我经常想对SQL Server Management Studio(SSMS)中的大型文本列的值进行"快速检查".在网格结果模式下,SSMS允许您查看的最大字符数为65535.(在文本结果模式中它甚至更少.)有时我需要查看超出该范围的内容.使用SQL Server 2005数据库,我经常使用将其转换为XML的技巧,因为SSMS允许您以这种方式查看更大量的文本:

SELECT CONVERT(xml, MyCol) FROM MyTable WHERE ...
Run Code Online (Sandbox Code Playgroud)

但是现在我使用的是SQL CE,并且没有Xml数据类型.选项下仍有"最大字符重新获取的XML"值; 我想这在连接到其他数据源时很有用.

我知道我可以通过运行一个小的控制台应用程序或其他东西来获得全部价值,但在SSMS中是否有办法查看整个ntext列值?

[编辑]好的,这第一次没有引起太多关注(18次观看?!).这不是一个大问题,但也许我只是沉迷于它.这周必须有一些好方法,不是吗?因此,适度的赏金是活跃的.从最好到最差的顺序,我愿意接受的答案是:

  1. 一种解决方案,与SQL CE中的XML技巧一样简单.也就是说,完成这项工作的单一功能(转换,演员等).
  2. 破解SSMS以使其在结果中显示更多文本的非侵入性方法.
  3. 一个等效的SQL查询(可能是创造性地使用SUBSTRING并生成多个ad-hoc列的东西)来查看结果.

该解决方案应该与SSMS的SQL CE中任意长度的nvarchar和ntext列一起使用.有任何想法吗?

dev*_*vio 3

如果您使用支持 TOP 和 OUTER APPLY 的 CE 3.5,请尝试以下语句:

SELECT texts.id, SUBSTRING(texts.text_column, number*100+1, 100)
FROM 
    (SELECT texts.id, texts.text_column, (99+LEN(texts.text_column))/100 AS l 
     FROM texts) AS texts
OUTER APPLY 
    (SELECT TOP(l) number 
     FROM master.dbo.spt_values val 
     WHERE name IS NULL 
     ORDER BY number) n
Run Code Online (Sandbox Code Playgroud)

100(和 99)是我在数据中测试时使用的文本长度。