超过varchar值上限的考虑用ntext

解决方案 »

  1.   

    字元資料型別,可以是固定長度 (nchar) 或可變長度 (nvarchar) Unicode 資料並使用 UNICODE UCS-2 字元集。nchar(n)n 字元的固定長度 Unicode 字元資料。n 必須是 1 到 4,000 的其中一個值。儲存大小為 n 位元組的兩倍大。nchar 的 SQL-92 同義資料表 (Synonym) 為 national char 和 national character 。nvarchar(n) n 字元的可變長度 Unicode 字元資料。n 必須是 1 到 4,000 的其中一個值。儲存大小,以位元組計,是輸入字元數的兩倍大。輸入的資料長度可以是 0 字元。nvarchar 的T SQL-92 同義資料表為 national char varying 和 national character varying。備註
    當您未在資料定義或變數宣告陳述式內指定 n,其預設長度為 1。當未使用 CAST 函數指定 n 時,此預設長度為 30。當資料行中的資料項目被預期固定使用近似相同的大小,請使用 nchar。當資料行中的資料項目被預期使用各種不同的大小時,請使用 nvarchar。使用 nchar 或 nvarchar 的物件時,除非使用 COLLATE 子句指派了特定的定序,否則將會被指派預設的資料庫定序。SET ANSI_PADDING OFF 不會套用到 nchar 或 nvarchar。在 nchar 和 nvarchar 中,SET ANSI_PADDING 總是保持 ON。
      

  2.   

    用ntext是不能定义成局部变量的啊?每个字段的长度平均有8个字符长度左右!我是用在存储过程动态拼凑变量的,所以会出现这种情况!
      

  3.   

    在存储过程里面处理的:
    Declare @var nvarchar(4000)
      循环读出某个表的所有字段(现在比如是这个表有40个字段,每个字段大概有8,9个字符)
            动态读出每一个字段赋给变量@var,  Set @var=@var+字段
      现在情况就是可能变量@var存储了30个字段后就再也存储不下去了
      用类型ntext又不行,不支持局部变量这类型
      

  4.   

    楼主说的还不是很清楚,如果可能把代码帖出来看看吧
    系统有没有报错,是不是你没有把字段类型转换过来,看你上面又是nvarchar,又是美元的!
      

  5.   

    ltrim(rtrim(字段名)) --这样去掉左右空格试试
      

  6.   

    不是空格的问题,是SQL每个字段变量只能接受256个字符长度的,所以是没办法一个变量接受超过这个数的,所以只能别的方法解决了!谢谢各位的意见