转换因uniqueidentifier而失败

时间:2015-02-24 03:29:37

标签: sql-server sql-server-2012

这里很基本,因为我正在尝试插入表格,但下面会出现错误。请帮助

SET ANSI_WARNINGS  OFF
INSERT INTO [P6_GrassleyCommitteeInc_20150223].[dbo].[std_Individual]
           ([ind_GUID]
           ,[ind_Prefix]
           ,[ind_FirstName]
           ,[ind_MiddleName]
           ,[ind_LastName]
           ,[ind_Suffix]
           ,[ind_ProfSuffix]
           ,[ind_Title]
           ,[ind_MailName]
           ,[ind_Salutation1]
           ,[ind_Salutation2]
           ,[ind_pty_GUID]
           ,[ind_eth_GUID]
           ,[ind_rac_GUID]
           --,[ind_clo_GUID]
           ,[ind_occ_GUID]
           ,[ind_og1_GUID]
           ,[ind_og2_GUID]
           ,[ind_og3_GUID]
           ,[ind_Birthdate]
           ,[ind_Register]
           ,[ind_Gender]
           ,[ind_Marital]
           ,[ind_VoterId]
           ,[ind_SourceID]
           ,[ind_HashedID]
           ,[ind_Deleted]
           ,[ind_CreatedOn]
           ,[ind_CreatedBy]
           --,[ind_UpdatedOn]
           --,[ind_UpdatedBy]
           --,[ind_DeletedOn]
           --,[ind_DeletedBy]
           ,[ind_int_GUID]
           ,[ind_API_Id]
           ,[ind_Password]
           --,[ind_tracking_GUID]
           ,[ind_Inactive]
           --,[ind_GRPassword]
           )
     select 
          isnull(indguid,''), --,<ind_GUID, uniqueidentifier,>
         '',--  ,<ind_Prefix, nvarchar(10),> --(i thought this field was [indiv. title] but it was not in this database
         isnull(first_name,''),  --,<ind_FirstName, nvarchar(30),>
         '',  --,<ind_MiddleName, nvarchar(30),>
         isnull(last_name,''),  --,<ind_LastName, nvarchar(30),>
         '',  --,<ind_Suffix, nvarchar(10),>
       '',    --,<ind_ProfSuffix, nvarchar(10),>
       isnull(title,''),    --,<ind_Title, nvarchar(100),>
       isnull(mail_name,''),    --,<ind_MailName, nvarchar(50),>
        isnull(salutation,''),   --,<ind_Salutation1, nvarchar(50),>
        '',   --,<ind_Salutation2, nvarchar(50),>
       ptyguid,    --,<ind_pty_GUID, uniqueidentifier,>
       isnull(ethguid,''),    --,<ind_eth_GUID, uniqueidentifier,>
       racguid,    --,<ind_rac_GUID, uniqueidentifier,>
           --,<ind_clo_GUID, uniqueidentifier,>
       occguid,  --  ,<ind_occ_GUID, uniqueidentifier,>
       og1guid,    --,<ind_og1_GUID, uniqueidentifier,>
       og2guid,    --,<ind_og2_GUID, uniqueidentifier,>
       og3guid,    --,<ind_og3_GUID, uniqueidentifier,>
       isnull(birthdate,''), --   <ind_Birthdate, datetime,>
         isnull(register,''), -- <ind_Register, datetime,>
         ISNULL(sex,''),  --,<ind_Gender, nchar(1),>
         'Z',  --,<ind_Marital, nchar(1),>
     ISNULL(VRNUMBER,''),   --,<ind_VoterId, nvarchar(20),>
        LTRIM(IDNUMBER),   --,<ind_SourceID, nvarchar(50),>
        '',   --,<ind_HashedID, nvarchar(50),>
       0,   --,<ind_Deleted, bit,>
        getdate(),  --,<ind_CreatedOn, datetime,>
        '00000000-0000-0000-0000-000000000000',   --,<ind_CreatedBy, uniqueidentifier,>
           --,<ind_UpdatedOn, datetime,>
           --,<ind_UpdatedBy, uniqueidentifier,>
           --,<ind_DeletedOn, datetime,>
           --,<ind_DeletedBy, uniqueidentifier,>
         intguid,  --,<ind_int_GUID, uniqueidentifier,>
         '',  --,<ind_API_Id, nvarchar(10),>
         '',  --,<ind_Password, nvarchar(40),>
          -- ,<ind_tracking_GUID, uniqueidentifier,>
         case when recstatus = '3' then 1 else 0 end  --,<ind_Inactive, bit,>
          -- ,<ind_GRPassword, nvarchar(40),>)
From [P6_GrassleyCommitteeInc_20150223].[dbo].[i_Master] where enttype = 'ind'
GO
SET ANSI_WARNINGS  ON

收到错误:

  

消息8169,级别16,状态2,行2转换时转换失败   从字符串到uniqueidentifier。

1 个答案:

答案 0 :(得分:2)

查看文档(https://msdn.microsoft.com/en-us/library/ms187942(v=sql.110).aspx),我认为''不是有效的唯一标识符,因此您的ISNULL可能会导致此问题。

您需要删除ISNULL并更改架构以允许这些列中的空值;或者如果你不能允许空值或不能更改模式,那么你可以输入一个默认值全部为0(就像你为ind_CreatedBy所做的那样),或者生成一个NEWID(),这里记录了https://msdn.microsoft.com/en-us/library/ms190348(v=sql.110).aspx

因此,您的ind_guid行可能看起来像其中之一:

    ISNULL(ind_guid, '00000000-0000-0000-0000-000000000000')

    ISNULL(ind_guid, NEWID())

我不知道你的意图是什么,但我的猜测是使用NEWID()可能更符合你想要的。