ASP+Sql server
我的SQL语句中:
sql=".........cast(ziduan as nvarchar) ..............."这样之后,ziduan被转换成nvarchar类型,可是我发现,我的数据有所丢失.1,请问cast(ziduan as nvarchar)默认截取ziduan 的几个字节?
2,请问cast(ziduan as nvarchar(32))默认截取ziduan 的32个字节吗?

解决方案 »

  1.   

    DECLARE @n nvarchar(50)
    SELECT @n=REPLICATE('*',50)SELECT LEN(CAST(@n AS NVARCHAR))自己做做测试不就知道了吗?
      

  2.   

    建议改用:cast(ziduan as varchar)
      

  3.   

    对nvarchar/nchar数据类型来说.
    每个字符都占2个字节.
      

  4.   

    看我1楼的测试.
    对CAST( AS NVARCHAR) 或 CAST( AS VARCHAR)  不指定长度.则默认为30.超过30.截断.
      

  5.   

    对于
    DECLARE @XX nvarchar   不指定长度.默认是1个字符..超过.则截断.建议指定长度.
      

  6.   

    --建議加上長度
    declare @s varchar(50)
    SELECT @s=REPLICATE('A',50)
    declare @t table([Name] varchar(50))
    insert @t select @s
    select len(cast([name] as nvarchar)) from @t
    /*
    (影響 1 個資料列)            
    ----------- 
    30(影響 1 個資料列)*/
      

  7.   

    1,请问cast(ziduan as nvarchar)默认截取ziduan 的几个字节? 错了,是几个字符 不是几个字节/.
    nvarchar不带参数  默认提取几个字符?
      

  8.   

    长度是
    1.60
    2.32如果是创建表用(n)varchar,没制定长度的话
    varchar = 1
    nvarchar = 2
      

  9.   

    但nvarchar需要2位存储一个字符,所以可以存储的字符数要/2
      

  10.   

    如果不是存储中文就用varchar, 
    为了节省空间,最好指定长度.