sql-server – 将VARCHAR转换为VARBINARY
我在表格中记录了昂贵的运行查询及其查询打算,以便我们监控机能趋势并确定必要优化的地区. 可是,它已经到了查询打算占用太多空间的水平(由于我们正在针对每个查询存储整个打算). 因此,我试图通过将QueryPlanHash和QueryPlan提取到另一个表来类型化现稀有据. CREATE TABLE QueryPlans ( QueryPlanHash VARBINARY(25),QueryPlan XML,CONSTRAINT PK_QueryPlans PRIMARY KEY ( QueryPlanHash ) ); 因为sys.dm_exec_query_stats中query_plan_hash的界说是二进制字段(我常常插入新数据),我在新表中行使VARBINARY作为数据范例. 可是,下面的插入失败了…… INSERT INTO QueryPlans ( QueryPlanHash,QueryPlan ) SELECT queryplanhash,queryplan FROM ( SELECT p.value('(./@QueryPlanHash)[1]','varchar(20)') queryplanhash,QueryPlan,ROW_NUMBER() OVER (PARTITION BY p.value('(./@QueryPlanHash)[1]','varchar(20)') ORDER BY DateRecorded) rownum FROM table CROSS APPLY QueryPlan.nodes('/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple[@QueryPlanHash]') t(p) ) data WHERE rownum = 1 ….带错误 Implicit conversion from data type varchar to varbinary is not allowed. Use the CONVERT function to run this query. 题目是查询打算哈希值已经是二进制名目,可是在XML查询打算中存储为VARCHAR,譬喻 0x9473FBCCBC01AFE 和CONVERT到BINARY给出了完全差异的值 0x3078393437334642434342433031414645 我实行将XQuery select中的值界说变动为二进制,但之后它没有返回任何值. 怎样从XML查询打算中将0x9473FBCCBC01AFE的值作为VARBINARY而不是VARCHAR提取? 办理要领当您但愿在从字符串转换时保持沟通的二进制值时,您必要行使特定样式.不然,SQL Server会实行对字符串举办编码,要领与编码“bob”或“frank”的方法沟通.也就是说,您的输入字符串看起来不正确 – 穷乏一个字节或一个字节太多.假如我删除尾随E,这可以正常事变: SELECT CONVERT(VARBINARY(25),'0x9473FBCCBC01AF',1); ------------ the,1 is important ---------------^^^ 功效是二进制的: ---------------- 0x9473FBCCBC01AF (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |