0

我有aspnet_Tablename。请参阅下面的图片进行数据设计。

在此处输入图像描述

现在,在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中读取它。

但没有运气。

谢谢

4

2 回答 2

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_UsersonUserID将为您提供用户名和电子邮件。享受。

于 2013-08-14T12:11:59.370 回答
0

看看选项(查询结果/SQL Server/结果到网格页面)

更具体地说,在

检索到的最大字符数

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

于 2013-08-14T05:01:10.017 回答