eg:a 是一nText字段,现在想取出里面的内容,
如果按照下面的写法肯定不行。Select a From tale1 Where .....
///////////////////////////////
第一次用2005,不知道该如何解决这样的问题。

解决方案 »

  1.   

    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使文本值一直锁定到事务结束。其他用户可以读取该值,但是不能对其进行修改。
      

  2.   

    示例
    下例读取 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
      

  3.   

    LZ 用的既然是Sql2005那么可以直接用SUBSTING取值
    USE pubs
    SELECT pub_id, SUBSTRING(logo, 1, 10) AS logo, 
       SUBSTRING(pr_info, 1, 10) AS pr_info
    FROM pub_info
    WHERE pub_id = '1756'
    所以可以直接取Select   SUBSTRING(a, 1, 10) AS a  From   tale1   Where   ..... 另外如果用Sql2005可以考虑用nvarchar(max)取代现有的nText数据类型
      

  4.   

    1)用Substring???
    ----------------
      是要把该字段里面的所有内容都取出来,又不是只取那里面的部分内容2)用nvarchar(max)???
    ----------------
      那max写多少呢?4000? 
       
      

  5.   

    create table tb(id ntext)
    insert into tb values('10001')
    insert into tb values('10002')
    goselect * from tbdrop table tb/*
    id   
    -----
    10001
    10002(所影响的行数为 2 行)
    */
      

  6.   

    create table tb(id ntext)
    insert into tb values('10001')
    insert into tb values('10002')
    goselect id = cast(id as varchar) from tbdrop table tb/*
    id   
    -----
    10001
    10002(所影响的行数为 2 行)
    */
      

  7.   

    都2005了, 就把类型改成nvarchar(max)吧, 这样字符串函数都能用了
      

  8.   

    max 就是 max, 它是一个标识符, 没有具体的值
      

  9.   

    max   就是   max,   它是一个标识符,   没有具体的值 ----------有吧?好像是2147483647,
      

  10.   

    to:邹建老大我在2005的Management Studio 里面手工建的表,我把Data Type改成"nvarchar(max)"了,是这样做吗?但提示"Invalid Data Type".
      

  11.   

    我在2005的Management   Studio   里面手工建的表,我把Data   Type改成 "nvarchar(max) "了,是这样做吗? 但提示 "Invalid   Data   Type ". -------------------------------------------------------
    LZ用的是 2005 的 Management   Studio 可是你连上的是SqlServer2005的数据库实例吗?如果是那么这个nvarchar(max)数据类型是没有问题的,可以如果连上的其实还是Sql2000的数据库实例那么是会报你提示的错误的,LZ第一次用Sql2005有些地方要注意一下
    nvarchar(max)是Sql2005里面新增的一种数据类型,它可以取代 ntext
    varchar(max)取代 text
    varbinary(max)取代 image