- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 SQL Server 数据库,其中有一个表,其中包含 varbinary(256) 类型的字段。
当我通过彩信中的查询查看此二进制字段时,该值如下所示:
0x004BC878B0CB9A4F86D0F52C9DEB689401000000D4D68D98C8975425264979CFB92D146582C38D74597B495F87FEA09B68A8440A
当我使用 CFDUMP 查看同一字段(和同一记录)时,该值如下所示:
075-56120-80-53-10279-122-48-1144-99-21104-1081000-44-42-115-104-56-10584373873121-49-714520101-126-61-115116891237395-121-2-96-101104-886810
(对于下面的示例,原始二进制值为@A
,上面的CFDUMP值为@B
)
我尝试使用 CAST(@B as varbinary(256))
但没有获得与 @A
相同的值。
我必须做什么才能将从 CFDUMP 检索到的值转换为正确的二进制表示形式?
注意:我的数据库中不再有适用的记录。我需要将 @B
转换为可以重新插入 varbinary(256) 字段的正确值。
最佳答案
(根据评论扩展)
我的意思并不是讽刺,但是它们如何显示二进制文件有什么区别?这只是数据呈现方式的差异。这并不意味着实际的二进制值不同。
这与日期的处理方式类似。在内部,他们是一个很大的数字。但由于大多数人不知道 1234567890
代表哪个日期,因此应用程序选择以更人性化的格式显示该数字。因此 SSMS 可能将日期显示为 2009-02-13 23:31:30.000
,而 CF 可能将其显示为 {ts '2009-02-13 23:31:30'}
。尽管演示不同,但其内部值(value)仍然相同。
就二进制而言,SSMS 将其显示为十六进制。如果您在查询列上使用 binaryEncode()
并将二进制转换为十六进制,您可以看到它是相同的值。只是没有前导 0x
:
writeDump( binaryEncode(yourQuery.binaryColumn, "hex") )
如果您在二进制方面遇到其他问题,能否详细说明一下?
更新:
不幸的是,我认为您无法轻松地将 cfdump 表示形式转换回二进制。与 Railo 的实现不同,Adobe 的 cfdump
只是将各个字节的数字表示形式连接成一个大字符串,没有分隔符。 (破折号只是负数)。您可以通过循环示例字符串的字节来重现这一点。下面的代码生成与您发布的相同的数字字符串。
bytes = binaryDecode("004BC878B0CB9A4F...", "hex");
for (i=1; i<=arrayLen(bytes); i++) {
WriteOutput( bytes[i] );
}
我认为理论上可以将该字符串转换为二进制,但这会非常困难。 AFAIK,没有办法准确确定一个数字(或字节)的开始位置和另一个数字的结束位置。有一些线索,但最终只能归结为猜测。
Railo 的实现显示由破折号“-”分隔的字节值。两个连续的破折号表示负数。即“0”,“75”,“-56”,...
0-75--56-120--80--53--102-79--122--48--11-44--99--21-104--108-1-0-0-0--44--42--115--104--56--105-84-37-38-73-121--49--71-45-20-101--126--61--115-116-89-123-73-95--121--2--96--101-104--88-68-10
因此您可能可以将该字符串解析回字节数组。然后使用 <cfqueryparam cfsqltype="CF_SQL_BINARY" ..>
将二进制文件插入数据库。不幸的是,这对您没有帮助,但解释可能会对下一个人有所帮助。
此时,我认为最好的选择是从数据库备份中恢复数据。
关于sql-server - 使用 CFDUMP 查看时的二进制数据不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26952492/
使用 ColdFusion MX7,如果我们遇到异常,我们会向开发团队发送一封电子邮件,其中包含各种数据范围(包括表单结构)的转储。 这对于调试非常有用,除非用户登录时出错。我们最终将密码打印出来。
如何解析这个结构?我需要把它变成单个变量。例如。来自属性结构: name type value 我对结构不熟悉,我需要将此类数据输入数据库。 我尝试过 cfloop,但什么也没有。 最佳答案 假设您的
我想将 cfdump 的输出临时存储为字符串。我知道有一种方法可以将它存储在文件中,但是有没有一种方法可以让我获得等效于 cfdump format='text' 的信息。 ? 最佳答案 使用 cfs
我想我刚刚意识到当他们不让我使用 cfdump 时我的网络主机是多么的限制。这其实有点让我生气,真的,dump 有什么害处?无论如何,我的问题是是否有人编写了一个 cfdump 替代方案来剔除复杂类型
可以在cfcomponent中使用cfdump吗? 可以在cfscript中使用cfdump吗? 我知道分析器不存在,那么如何才能发出insde cfcomponent函数的值 cfscript? 我
当我们转储 ORM 实体时,是否可以限制 cfdump 的大小?似乎 cfdump 将尝试加载和显示与被转储的实体相关/关联的所有实体(如多对一或一对多关系中所定义)。有时,转储单个实体可能会导致输出
我最近开始使用 cfc 组件将用户信息存储在 Session 变量中。我曾经将它们作为单独的变量存储在 Session 中,例如 Session.UserId、Session.Firstname 或
为了调试,我想将某些变量转储到我的网页上。如何从 cfscript 标记内部执行此操作? 我尝试了以下方法,但不起作用: ... ... 有什么线索可以做吗? 最佳答
我有一个 SQL Server 数据库,其中有一个表,其中包含 varbinary(256) 类型的字段。 当我通过彩信中的查询查看此二进制字段时,该值如下所示: 0x004BC878B0CB9A4F
我在这里运行代码,如下所示: #randnumber#"> 它抛出的错误如下: Variable OWN_ID is undefined. 现在如果我删除 $(document).ready(fu
在我设计的应用程序中,我将其中一个网页命名为“error.cfm”。我希望它在应用程序出现错误时显示。所以我将以下代码放入“error.cfm”: An uncaught except
当我们记录错误时,我们喜欢收集一些有关应用程序状态的信息,以帮助我们诊断原因。在我们的错误日志代码中,我们有这样的内容: 实际上还有更多的内容(我们在尝试 cfdum
处理嵌套的 ORM 关系时,使用 cfdump或 writeDump可以迅速导致 java.lang.OutOfMemoryError错误是因为 CF 尝试解决嵌套对象中的关系并转储太多对象。 这可以
我正在使用 linkedin-j Java 库和 JavaLoader 创建一个应用程序,我发现每当我将它放入运行 ColdFusion 9.0.1 的服务器时,我开始收到以下错误: coldfusi
我刚刚将 Lucee 更新到最新版本 5.2.1.9,但遇到了一个小问题。 当我使用 cfdump 标记调试查询时,转储仅显示查询的行,而不显示 SQL 查询本身。 有人可以帮我解决这个问题吗? 这个
我是一名优秀的程序员,十分优秀!