无破折号无法更新uniqueidentifier字段
update a
set GUID = replace(b.guid,'-','')
from table1 a
join table2 b on a.ID=b.ID
我收到此错误:
Msg 8169,Level 16,State 2,Line 26
从字符串转换为uniqueidentifier时转换失败。
table1中的GUID必须为“no dashes format”
e1336903e4d04d2a88ad23ed87ddfff0
tabl2中的GUID是
E1336903-E4D0-4D2A-88AD-23ED87DDFFF0
我已尝试投放到varchar(36)
和其他变体同样的错误
谢谢!
答案 0 :(得分:0)
尝试以下代码并使用数据类型NVarchar(36)
创建[Guid]IF OBJECT_ID(N'tempdb..##Temp1') IS NOT NULL
DROP TABLE ##Temp1
CREATE TABLE ##Temp1 (
Id INT identity
,Gid NVARCHAR(36)
)
INSERT INTO ##Temp1 (Gid)
SELECT NEWID()
IF EXISTS (
SELECT 1
FROM ##Temp1
WHERE CHARINDEX('-', Gid) > 0
)
BEGIN
UPDATE T2
SET Gid = REPLACE(T3.Gid, '-', '')
FROM ##Temp1 t2
INNER JOIN ##Temp1 AS T3 ON T3.Id = t2.Id
END
ELSE
BEGIN
PRINT 'No record contains with symbol ''-'''
END
SELECT * FROM ##Temp1