好像不行!
我是在存储过程中出入一个TEXT类型的参数,然后在存储过程中进行处理。
没法用到UPDATETEXT

解决方案 »

  1.   

    用substring()
    他可以操作text类型
      

  2.   

    SUBSTRING
    返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型。 语法
    SUBSTRING ( expression , start , length ) 参数
    expression是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。start是一个整数,指定子串的开始位置。length是一个整数,指定子串的长度(要返回的字符数或字节数)。说明  由于在 text 数据上使用 SUBSTRING 时 start 和 length 指定字节数,因此 DBCS 数据(如日本汉字)可能导致在结果的开始或结束位置拆分字符。此行为与 READTEXT 处理 DBCS 的方式一致。然而,由于偶而会出现奇怪的结果,建议对 DBCS 字符使用 ntext 而非 text。
    返回类型
    如果 expression 是支持的字符数据类型,则返回字符数据。如果 expression 是支持的 binary 数据类型,则返回二进制数据。返回字符串的类型与给定表达式的类型相同(表中显示的除外)。给定的表达式 返回类型 
    text varchar 
    image varbinary 
    ntext nvarchar 
      

  3.   

    Transact-SQL 参考  
    READTEXT
    读取 text、ntext 或 image 列中的 text、ntext 或 image 值,从指定的偏移量开始读取指定的字节数。语法
    READTEXT { table.column text_ptr offset size } [ HOLDLOCK ] 参数
    table.column是从中读取的表和列的名称。表名和列名必须符合标识符的规则。必须指定表名和列名,不过可以选择是否指定数据库名称和所有者名称。text_ptr有效文本指针。text_ptr 必须是 binary(16)。offset开始读取 text、image 或 ntext 数据之前跳过的字节数(使用 text 或 image 数据类型时)或字符数(使用 ntext 数据类型时)。使用 ntext 数据类型时,offset 是在开始读取数据前跳过的字符数。使用 text 或 image 数据类型时,offset 是在开始读取数据前跳过的字节数。 size是要读取数据的字节数(使用 text 或 image 数据类型时)或字符数(使用 ntext 数据类型时)。如果 size 是 0,则表示读取了 4 KB 字节的数据。HOLDLOCK使文本值一直锁定到事务结束。其他用户可以读取该值,但是不能对其进行修改。注释
    使用 TEXTPTR 函数获得有效的 text_ptr 值。如果返回不止一行,TEXTPTR 将返回指向指定行中的 text、ntext 或 image 列的指针,或返回指向查询所返回的最后一行中的 text、ntext 或 image 列的指针。由于 TEXTPTR 返回 16 字节的二进制字符串,所以最好声明一个控制文本指针的局部变量,然后在 READTEXT 中使用该变量。有关声明局部变量的更多信息,请参见 DECLARE @local_variable。 在 SQL Server 2000 中可能存在无效的文本指针。有关 text in row 选项的更多信息,请参见 sp_tableoption。有关如何使文本指针无效的更多信息,请参见 sp_invalidate_textptr。如果 @@TEXTSIZE 函数的值小于为 READTEXT 指定的大小,它将替代为 READTEXT 指定的大小。@@TEXTSIZE 函数是对由 SET TEXTSIZE 语句设置的返回数据字节数的限制。有关如何设置 TEXTSIZE 会话设置的更多信息,请参见 SET TEXTSIZE。权限
    READTEXT 权限默认授予对指定的表具有 SELECT 权限的用户。这些权限可在传递 SELECT 权限时传递。示例
    下例读取 pub_info 表中 pr_info 列的第 2 个至第 26 个字符。USE pubs
    GO
    DECLARE @ptrval varbinary(16)
    SELECT @ptrval = TEXTPTR(pr_info) 
       FROM pub_info pr INNER JOIN publishers p
          ON pr.pub_id = p.pub_id 
          AND p.pub_name = 'New Moon Books'
    READTEXT pub_info.pr_info @ptrval 1 25
    GO
    请参见@@TEXTSIZEUPDATETEXTWRITETEXT©1988-2000 Microsoft Corporation。保留所有权利。
      

  4.   

    感谢各位的好意,问题仍然没有解决!
    我的思想如下:
    text数据是一串已逗号分隔的字符串,
    获取逗号第一次出现的位置,然后取逗号之前的数据(此处可用SUBSTRING,因为返回的数据是字符型的)。然后删除逗号之前的内容,截取剩下的数据(此处不能用SUBSTRING,因为返回的数据是text型的)
    然后重复以上操作,直至取完所有的数据。拜托了!!!
    (其实我想过在传入text数据参数之前,先将其格式化,然后按固定的字符位置取数,不过我觉得这样太麻烦了)