不允许从数据类型 image 到 xml 的显式转换 怎么破?


select CONVERT(xml,ITCheckPerson) FROM I_ITCard

ITCheckPerson 数据类型是 image
存储的是GUID
但是在转换为XML的时候报错为:
不允许从数据类型 image 到 xml 的显式转换
这个怎么破?

14 个解决方案

#1


先转varchar再转xml试下?

#2


引用 1 楼 kingtiy 的回复:
先转varchar再转xml试下?

试过,一样的,不允许从数据类型 image 到 varchar 的显式转换

#3


image类型存的是二进制数据, 无法直接转为XML的文本, 需用前端程序读取后再转换.

#4


引用 3 楼 ap0405140 的回复:
image类型存的是二进制数据, 无法直接转为XML的文本, 需用前端程序读取后再转换.

用工具也麻烦,128个表,还不知道哪些表,字段有image这种类型的字段,而且数据量达到几百万,前端跑,会跑死的 

#5


写个程序吧,数据库本身处理不了的;

PS:你怎么会认为能跑死呢 ?

#6


对了,image字段类型,需要先知道存储进去的规则才能解析出来的吧

#7


引用 5 楼 wmxcn2000 的回复:
写个程序吧,数据库本身处理不了的;

PS:你怎么会认为能跑死呢 ?


嗯,跑过了,确实死了,今天准备写个精简版的

#8


引用 7 楼 lf6112 的回复:
Quote: 引用 5 楼 wmxcn2000 的回复:

写个程序吧,数据库本身处理不了的;

PS:你怎么会认为能跑死呢 ?


嗯,跑过了,确实死了,今天准备写个精简版的


注意及时提交,晚上下班了让他跑,早上看结果;这种工作,越看越着急!

#9


引用 8 楼 wmxcn2000 的回复:
Quote: 引用 7 楼 lf6112 的回复:

Quote: 引用 5 楼 wmxcn2000 的回复:

写个程序吧,数据库本身处理不了的;

PS:你怎么会认为能跑死呢 ?


嗯,跑过了,确实死了,今天准备写个精简版的


注意及时提交,晚上下班了让他跑,早上看结果;这种工作,越看越着急!


上次就这样,一晚上跑了36W条数据,怎么想也不可能,之前1个小时能跑20W,中间死了。。。等我早上来公司,才给激活继续跑,想想还是算了,自己写了一个sql来迁移,哪知道还有image转xml的玩意

#10



DECLARE @T TABLE(Col IMAGE);
INSERT INTO @T
        ( Col )
VALUES  ( 0x01EF  -- Col - image
          );

  SELECT CONVERT(XML,UPPER(master.dbo.fn_varbintohexstr(Col)))  FROM @T
  /*
  (无列名)
0X01EF*/
 
用这函数转,会转为小写需要再转大写

IMage为二进制,先转字符串再转xml

#11


引用 10 楼 roy_88 的回复:

DECLARE @T TABLE(Col IMAGE);
INSERT INTO @T
        ( Col )
VALUES  ( 0x01EF  -- Col - image
          );

  SELECT CONVERT(XML,UPPER(master.dbo.fn_varbintohexstr(Col)))  FROM @T
  /*
  (无列名)
0X01EF*/
 
用这函数转,会转为小写需要再转大写

IMage为二进制,先转字符串再转xml


确定可以吗,我试了下没成功哦   
CREATE FUNCTION F_GONGHAO(@Collue image)
RETURNS xml 
AS
BEGIN
DECLARE @GONGHAO xml
DECLARE @T TABLE(Col IMAGE);

INSERT INTO @T
        ( Col )
VALUES  ( @Collue
          );
 
SELECT @GONGHAO = CONVERT(XML,UPPER(master.dbo.fn_varbintohexstr(Col)))  FROM @T

RETURN @GONGHAO

END
GO


#12


CREATE FUNCTION F_GONGHAO(@Collue image)
RETURNS xml 
AS
BEGIN
DECLARE @GONGHAO XML;

SELECT @GONGHAO = CONVERT(XML,UPPER(master.dbo.fn_varbintohexstr(@Collue)))

RETURN @GONGHAO

END
GO

SELECT dbo.F_GONGHAO(0xEF)
/*
(无列名)
0XEF
*/

#13


把你的函数改改

你的XML格式是?你这样把转换同转换为字符串没有区别

XML格式:<A>0xEF</>--这样的格式才意义

#14


你是否要实现这样的效果?如果是二进制转换数字或字符串时这样用

DECLARE @image VARBINARY(max)
SET  @image=CAST(123456789 AS VARBINARY(max))

SELECT CAST(@image AS int)

SET @image=CAST('中国' AS VARBINARY(max))

SELECT CAST(@image AS VARCHAR(max))

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com