无法在SQL CE中的NTEXT字段中插入NULL?

时间:2010-12-01 04:13:29

标签: insert null sql-server-ce ntext

一个简单的例子:

CREATE TABLE People (
      personID     int          not null
    , name         nvarchar(50)  not null
    , addrLine1    nvarchar(50) null
    , addrLine2    nvarchar(50) null
    , suburb       nvarchar(30) not null
    , xmlRawInput  ntext        not null
    , xmlRawOutput ntext        null
) 
GO


INSERT People (
      personID          
    , name              
    , addrLine1         
    , addrLine2         
    , suburb            
    , xmlRawInput       
    , xmlRawOutput
)
SELECT
      101             AS personID           
    , 'george benson'   AS name
    , '123 help st'   AS addrLine1
    , NULL            AS addrLine2          
    , 'los angeles'   AS suburb
    , '<example>record<example>' AS xmlRawInput     
    , 'I LOVE MICROSOFT' AS xmlRawOutput
GO

这很好用;注意Null可以很容易地插入到addrLine2列中;但如果我改变了 在ntext列上'我爱微软'为NULL,我得到以下错误: 不支持转换。 [要转换的类型(如果已知)= int,要转换为的类型(如果已知)= ntext]

以下插入失败;有任何想法吗?我使用的是CE版本3.5.8080.0。

INSERT People (
      personID          
    , name              
    , addrLine1         
    , addrLine2         
    , suburb            
    , xmlRawInput       
    , xmlRawOutput
)
SELECT
      101             AS personID           
    , 'george benson'   AS name
    , '123 help st'   AS addrLine1
    , NULL            AS addrLine2          
    , 'los angeles'   AS suburb
    , '<example>record<example>' AS xmlRawInput     
    , NULL AS xmlRawOutput
GO

1 个答案:

答案 0 :(得分:2)

尝试两个想法:

values中使用select子句代替insert子句,即:

INSERT People (
      personID          
    , name              
    , addrLine1         
    , addrLine2         
    , suburb            
    , xmlRawInput       
    , xmlRawOutput
)
VALUES (
      101
    , 'george benson'
    , '123 help st'
    , NULL     
    , 'los angeles'
    , '<example>record<example>'
    , NULL 
)

如果出于某种原因,您必须使用select子句(为什么?),请尝试明确地将NULL强制转换为ntext。即,select convert(ntext, NULL)

如果values子句有效,那么原因可能是SqlCE引擎变得愚蠢并且在null语句中使用了错误的select默认数据类型。 convert可能有效,也可能无效,具体取决于null首先采用的数据类型,因为从技术上讲,您无法向ntext投放任何内容......但值得尝试。