programing

문자열에서 고유 식별자로 변환할 때 변환 실패 - 두 개의 GUID

skycolor 2023. 6. 26. 21:12
반응형

문자열에서 고유 식별자로 변환할 때 변환 실패 - 두 개의 GUID

나는 왜 이걸 삽입할 수 없는지 이해할 수 없습니다.문제를 발견할 수 없습니다.문자열에서 고유 식별자로 변환할 때 변환 실패라는 오류 메시지가 표시됩니다.

GUID는 제가 다른 테이블에서 선택했을 때 얻은 것입니다.

insert into [db].[dbo].[table] (myid,friendid,time1,time2) values
 ( CONVERT(uniqueidentifier,'0C6A36BA-10E4-438F-BA86-0D5B68A2BB15'),
   CONVERT(uniqueidentifier,'DF215E10-8BD4-4401-B2DC-99BB03135F2E'),
'2014-01-05 02:04:41.953','2014-01-05 12:04:41.953')

SQL Server 2012를 사용합니다.

열은 다음과 같습니다.

id        uniqueidentifier,
myid      uniqueidentifier,
friendid  uniqueidentifier,
time1     datetime nullable,
time2     datetime nullable

MSDN 설명서 여기

M에 약간의 맥락을 추가합니다.Ali's Answer 다음 코드를 사용하여 문자열을 고유 식별자로 변환할 수 있습니다.

   SELECT CONVERT(uniqueidentifier,'DF215E10-8BD4-4401-B2DC-99BB03135F2E')

그래도 문제가 해결되지 않으면 올바른 GUID를 입력했는지 확인합니다.

문제는 ID 열이 값을 얻지 못한다는 것입니다.나는 @Martin Smith SQL Fiddle에서 그가 ID 열을 선언한 것을 보았습니다.DEFAULT newid그리고 전..

DECLARE @t TABLE (ID UNIQUEIDENTIFIER DEFAULT NEWID(),myid UNIQUEIDENTIFIER
                , friendid UNIQUEIDENTIFIER, time1 Datetime, time2 Datetime)
insert into @t (myid,friendid,time1,time2) 
values
 ( CONVERT(uniqueidentifier,'0C6A36BA-10E4-438F-BA86-0D5B68A2BB15'),
   CONVERT(uniqueidentifier,'DF215E10-8BD4-4401-B2DC-99BB03135F2E'),
   '2014-01-05 02:04:41.953','2014-01-05 12:04:41.953')

SELECT * FROM @t

오류가 없는 결과 세트

╔══════════════════════════════════════╦══════════════════════════════════════╦══════════════════════════════════════╦═════════════════════════╦═════════════════════════╗
║                  ID                  ║                 myid                 ║               friendid               ║          time1          ║          time2          ║
╠══════════════════════════════════════╬══════════════════════════════════════╬══════════════════════════════════════╬═════════════════════════╬═════════════════════════╣
║ CF628202-33F3-49CF-8828-CB2D93C69675 ║ 0C6A36BA-10E4-438F-BA86-0D5B68A2BB15 ║ DF215E10-8BD4-4401-B2DC-99BB03135F2E ║ 2014-01-05 02:04:41.953 ║ 2014-01-05 12:04:41.953 ║
╚══════════════════════════════════════╩══════════════════════════════════════╩══════════════════════════════════════╩═════════════════════════╩═════════════════════════╝

제 문제는 "가이드"가 가이드가 아니라고 생각했던 "가이드"였습니다.

http://guid.us/Test/GUID

그래서 입력한 문자열을 다시 확인해보니 유효한 guid가 없습니다.

또한 데이터를 가져올 때 올바른 형식이어야 합니다.데이터 유형은 고유한 식별자이므로 올바른 형식은 xxxxxxxxxx-xxxxxx-xxxxxxxxxxxxxxxxxxxxx입니다.

예를 들어, 6F9619FF-8B86-D011-B42D-00C04FC964FF는 올바른 고유 식별자 값입니다.

오늘 SQL 명령을 실행하는 동안 이 문제가 발생했습니다.ExecuteSqlInterpolatedAsyncEF 코어 5의.

잘못된 코드: 더contactId내부에 배치됩니다.' '

await _dbContext.Database.ExecuteSqlInterpolatedAsync($"UPDATE Contact SET Status = {(int)Status} WHERE Id = '{contactId}'");

올바른 코드: 제거' '에서contactId그리고 그것은 동작한다.

await _dbContext.Database.ExecuteSqlInterpolatedAsync($"UPDATE Contact SET Status = {(int)Status} WHERE Id = {contactId}");

고유 식별자 열을 확인해야 하며 동일한 값을 지정하면 해당 필드에 디프 값을 지정해야 합니다.키의 고유성이 적용됩니다.

코드는 다음과 같습니다.

Insert into production.product 
(Name,ProductNumber,MakeFlag,FinishedGoodsFlag,Color,SafetyStockLevel,ReorderPoint,StandardCost,ListPrice,Size
,SizeUnitMeasureCode,WeightUnitMeasureCode,Weight,DaysToManufacture,
    ProductLine, 
    Class, 
    Style ,
    ProductSubcategoryID 
    ,ProductModelID 
    ,SellStartDate 
,SellEndDate 
    ,DiscontinuedDate 
    ,rowguid
    ,ModifiedDate 
  )
  values ('LL lemon' ,'BC-1234',0,0,'blue',400,960,0.00,100.00,Null,Null,Null,null,1,null,null,null,null,null,'1998-06-01 00:00:00.000',null,null,'C4244F0C-ABCE-451B-A895-83C0E6D1F468','2004-03-11 10:01:36.827')

저는 이것에 대해 흥미로운 변화를 가지고 있었습니다.처음에는 이 질문과 답변을 바탕으로 고유 식별자 필드에 삽입하는 데 문제가 있다고 생각했습니다.하지만 저의 경우 바하르 필드에 삽입할 때 이 오류가 발생했습니다.제가 삽입한 값에는 고유 식별자이지만 다른 텍스트도 포함되어 있습니다.일부 텍스트가 고유 식별자임을 인식했기 때문에 SQL Server가 고유 식별자로 텍스트를 구문 분석하려고 시도한 것으로 보입니다.처음 insert 문을 설정했을 때 값을 UPPER로 싸고 있었기 때문에 문제가 마스크되었습니다.그 후 저는 "수정"을 변경하여 가치를 바샤르로 주조했습니다.

언급URL : https://stackoverflow.com/questions/20940350/conversion-failed-when-converting-from-a-character-string-to-uniqueidentifier

반응형