SQL Server:读取完整的ntext列值

时间:2013-08-14 04:58:16

标签: sql-server stored-procedures ntext

我有aspnet_Tablename。请在下面的图片中查看数据设计。

enter image description here

现在,在PropertyValuesString列上,数据以xml格式存储。

当我运行此查询时。

SELECT TOP 10 [PropertyValuesString] FROM Table

我正在获得结果,但不是PropertyValuesString列的整个记录​​。

所以,任何人都让我知道。我怎样才能获得ntext属性列的全部价值?

还尝试了

select top 10 (max (convert(nvarchar(4000), PropertyValuesString))) FROM Table

DECLARE @ptrval varbinary(16)

SELECT @ptrval = TEXTPTR(data)
FROM TABLE1

READTEXT TABLE1.data @ptrval 0 500

这也只提供了部分文字,而不是完整的文字。

3)我甚至尝试查看显示的企业管理器中的数据

<Long Text>

我还尝试通过“set testsize 60000”更改文本大小,以便我可以看到文本。

实际上文本是由asp文件引起的,它可以在浏览器中看到,但我想在sql server中读取它。

但没有运气。

由于

2 个答案:

答案 0 :(得分:1)

最后我得到了答案。

CREATE FUNCTION [dbo].[GetProfilePropertyValue] (  
    @PropertyName as varchar(max)
    , @PropertyNamesString as varchar(max)
    , @PropertyValuesString as varchar(max)) 
RETURNS varchar(max)
AS
BEGIN
    DECLARE @StartIndex int
    DECLARE @EndIndex int
    DECLARE @StartPos int
    DECLARE @Length int

    -- First we find the starting position
    Set @StartIndex = PatIndex('%' + @PropertyName + ':%', @PropertyNamesString) + LEN(RTRIM(@PropertyName)) + 3
    Set @EndIndex = PatIndex('%:%', Right(@PropertyNamesString, LEN(@PropertyNamesString) - @StartIndex))
    Set @StartPos = Cast(Substring(@PropertyNamesString, @StartIndex, @EndIndex) As Int)

    -- Now we need to know how long it is
    Set @StartIndex = @StartIndex + @EndIndex + 1
    Set @EndIndex = PatIndex('%:%', Right(@PropertyNamesString, LEN(@PropertyNamesString) - @StartIndex))
    Set @Length = Cast(Substring(@PropertyNamesString, @StartIndex, @EndIndex) As int)

    -- Now we get the value we want
    RETURN SUBSTRING(@PropertyValuesString, @StartPos + 1, @Length)
END

这很简单,现在我们需要做的就是运行一个获取信息的查询。

SELECT
    dbo.GetProfilePropertyValue('LastName', PropertyNames, PropertyValuesString)
    , dbo.GetProfilePropertyValue('FirstName', PropertyNames, PropertyValuesString)
    , dbo.GetProfilePropertyValue('Phone', PropertyNames, PropertyValuesString)
FROM aspnet_Profile

加入aspnet_Users上的UserID会为您提供用户名和电子邮件。 请享用。

答案 1 :(得分:0)

查看Options (Query Results/SQL Server/Results to Grid Page)

,更具体地说,

  

检索到的最大字符数

     

输入1到65535之间的数字以指定最大数量   将在每个单元格中显示的字符。