--0xD41D8CD98F00B204E9800998ECF8427E 这是一个加密后的16进制串 类型为Binary
select CAST(0xD41D8CD98F00B204E9800998ECF8427E AS uniqueidentifier) --转换为唯一标识
------------------------------------ 查询结果
D98C1DD4-008F-04B2-E980-0998ECF8427E(1 行受影响)
select CAST('{D98C1DD4-008F-04B2-E980-0998ECF8427E}' AS Binary(16)) --然后转回来
----------------------------------
0x7B44393843314444342D303038462D30(1 行受影响)
--0x7B44393843314444342D303038462D30 跟原来的 0xD41D8CD98F00B204E9800998ECF8427E 不一至
谁能帮我解释下呢
----------------------------------
0x30784434314438434439384630304232(1 row(s) affected)我直接这样转 还是变了啊
0xD41D8CD98F00B204E9800998ECF8427E 是二进制字节
set @myid = 'fe2264aa-02ce-4fe6-81c2-1a27a12a05fd'
select cast(@myid as binary(16))
select cast(0xaa6422fece02e64f81c21a27a12a05fd as uniqueidentifier)
做得比较活了
都是把要传输的数据存储在XML上 然后将XML打包发到FTP
最后哪里需要就从FTP中取 取出解压生成SQL语句执行
简单说就是这样一个流程
比如 0xd41d8cd98f00b204e9800998ecf8427e 他存储再XML中是d41d8cd98f00b204e9800998ecf8427e
但问题是我从XML中取出d41d8cd98f00b204e9800998ecf8427e 并加上0x前缀拼成SQL 执行就报错。
我跟了下代码 IF EXISTS(SELECT * FROM HR_BASE_USER WHERE ID='{2A09D6AF-3393-4732-AC33-AC8E69BC77D1}')
UPDATE HR_BASE_USER SET ID='{2A09D6AF-3393-4732-AC33-AC8E69BC77D1}' , ACCOUNT='GET0005166' , DELETED=0 , NTACCOUNT='' , PASSWORDHASHVALUE=0x????胩頉?繂 , BUILT_IN=0 , SYSUSER=0 , ISADMIN=0 , ISSTOP=1 , FUSERID=21528 , FEMPID='{866B684D-A3AF-4DAF-904E-C10D00CFA8C7}' , FOPENPWD='' , FISALLOWLOGINEXPIRED=1 WHERE ID='{2A09D6AF-3393-4732-AC33-AC8E69BC77D1}' ELSE
INSERT INTO HR_BASE_USER (ID,ACCOUNT,DELETED,NTACCOUNT,PASSWORDHASHVALUE,BUILT_IN,SYSUSER,ISADMIN,ISSTOP,FUSERID,FEMPID,FOPENPWD,FISALLOWLOGINEXPIRED) VALUES('{2A09D6AF-3393-4732-AC33-AC8E69BC77D1}' , 'GET0005166' , 0 , '' , 0x????胩頉?繂 , 0 , 0 , 0 , 1 , 21528 , '{866B684D-A3AF-4DAF-904E-C10D00CFA8C7}' , '' , 1)
这里成了乱码PASSWORDHASHVALUE=0x????胩頉?繂
比如 函数名('0x','d41d8cd98f00b204e9800998ecf8427e ') SQL中执行的时候再将
他们拼接起来 0xd41d8cd98f00b204e9800998ecf8427e