1

簡単な例:

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 列の 'I Love Microsoft' を NULL に変更すると、次のエラーが表示されます: The conversion is not supported. [ 変換元の型 (既知の場合) = 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
4

1 に答える 1

2

試してみる 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句を使用する必要がある場合 (理由は?)、NULLto をntext明示的にキャストしてみてください。すなわち、select convert(ntext, NULL)

句が機能する場合values、原因はおそらく SqlCE エンジンが機能せずnullselectステートメントで間違ったデフォルトのデータ型を使用していることです。技術的には何もキャストできないため、convertデータ型が最初に取るものに応じて、機能する場合と機能しない場合があります...しかし、試してみる価値があります。nullntext

于 2010-12-01T05:49:20.877 に答える