我有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中读取它。
但没有运气。
由于
答案 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之间的数字以指定最大数量 将在每个单元格中显示的字符。