用 T_SQL语句,如何把字段int类型转换成uniqueidentifier类型,在线等

时间:2021-06-10 11:02:11
用 T_SQL语句,如何把表中字段int类型转换成uniqueidentifier类型,在线等
谢谢各位!

12 个解决方案

#1


int 與 uniqueidentifier 不相容

#2


你的意思是先把INT转成16进制再转uniqueidentifier?

#3


只要能把int转换成uniqueidentifier类型就行!

#4


没有默认的转换算法吧,uniqueidentifier是32个16进制数字,INT是一个10进制数字,两者没什么关系吧

#5


不行。。。。。。。。。。。。。。。。。。。。

#6


DECLARE @I INT
SELECT @I=123456
SELECT CAST(CAST(@I AS varbinary) AS UNIQUEIDENTIFIER)
--40E20100-0000-0000-0000-000000000000

不管了,能出来就行了对吧

#7


那先转换成别的什么类型,在转换成uniqueidentifier类型呢?可行否?

#8


6楼的这个不行吧,如果可以你直接给我写个转换吧
这种
alter table 表
alter column  列名 类型

#9



DECLARE @I INT
SELECT @I=123456
SELECT CAST(CAST(@I AS varbinary(16)) AS UNIQUEIDENTIFIER)
SELECT CAST(CAST(@I AS binary(16)) AS UNIQUEIDENTIFIER)
SELECT CAST(CAST(@I AS binary(4))+CAST(@I AS binary(4))+CAST(@I AS binary(4))+CAST(@I AS binary(4)) AS UNIQUEIDENTIFIER)
SELECT CAST(CAST(REPLICATE(CAST(@I AS binary(4)),4) AS binary(16)) AS UNIQUEIDENTIFIER)
SELECT CAST(CAST(HASHBYTES('MD5',CAST(@I AS varbinary(4))) AS binary(16)) AS UNIQUEIDENTIFIER)
SELECT CAST(CAST(HASHBYTES('MD5',CAST(@I AS varchar(20))) AS binary(16)) AS UNIQUEIDENTIFIER)

看哪种合LZ心意。

#10


能不能把它写成这种呢

alter table a表
alter column b列 类型

#11


引用 8 楼 xulu309701138 的回复:
6楼的这个不行吧,如果可以你直接给我写个转换吧
这种
alter table 表
alter column  列名 类型


直接改表恐怕不行。

第一种办法是建一个新表,数据导过去。
第二种办法是加一个新字段,更新过去。

LZ想清楚这么做是要干嘛。
为什么要把int改成uniqueidentifier?
你改的是主键字段吗?有外键引用吗?有存储过程或程序代码引用吗?

改之前做好备份。

#12


谢谢,想到了

#1


int 與 uniqueidentifier 不相容

#2


你的意思是先把INT转成16进制再转uniqueidentifier?

#3


只要能把int转换成uniqueidentifier类型就行!

#4


没有默认的转换算法吧,uniqueidentifier是32个16进制数字,INT是一个10进制数字,两者没什么关系吧

#5


不行。。。。。。。。。。。。。。。。。。。。

#6


DECLARE @I INT
SELECT @I=123456
SELECT CAST(CAST(@I AS varbinary) AS UNIQUEIDENTIFIER)
--40E20100-0000-0000-0000-000000000000

不管了,能出来就行了对吧

#7


那先转换成别的什么类型,在转换成uniqueidentifier类型呢?可行否?

#8


6楼的这个不行吧,如果可以你直接给我写个转换吧
这种
alter table 表
alter column  列名 类型

#9



DECLARE @I INT
SELECT @I=123456
SELECT CAST(CAST(@I AS varbinary(16)) AS UNIQUEIDENTIFIER)
SELECT CAST(CAST(@I AS binary(16)) AS UNIQUEIDENTIFIER)
SELECT CAST(CAST(@I AS binary(4))+CAST(@I AS binary(4))+CAST(@I AS binary(4))+CAST(@I AS binary(4)) AS UNIQUEIDENTIFIER)
SELECT CAST(CAST(REPLICATE(CAST(@I AS binary(4)),4) AS binary(16)) AS UNIQUEIDENTIFIER)
SELECT CAST(CAST(HASHBYTES('MD5',CAST(@I AS varbinary(4))) AS binary(16)) AS UNIQUEIDENTIFIER)
SELECT CAST(CAST(HASHBYTES('MD5',CAST(@I AS varchar(20))) AS binary(16)) AS UNIQUEIDENTIFIER)

看哪种合LZ心意。

#10


能不能把它写成这种呢

alter table a表
alter column b列 类型

#11


引用 8 楼 xulu309701138 的回复:
6楼的这个不行吧,如果可以你直接给我写个转换吧
这种
alter table 表
alter column  列名 类型


直接改表恐怕不行。

第一种办法是建一个新表,数据导过去。
第二种办法是加一个新字段,更新过去。

LZ想清楚这么做是要干嘛。
为什么要把int改成uniqueidentifier?
你改的是主键字段吗?有外键引用吗?有存储过程或程序代码引用吗?

改之前做好备份。

#12


谢谢,想到了