如何将二进制数据从MySQL转换为ColdFusion 11中的字符串?

时间:2015-04-15 20:40:33

标签: mysql coldfusion cfml

我的MySQL数据库中有一个字段设置为数据类型" BIT"。该字段中的值是101101.我试图使用Coldfusion(版本11)

读取此值

我只使用以下代码:

<cfquery name=q1 datasource=#data_source#>
  select * from mytable
</cfquery>

<cfoutput>
 #q1.mybitfield#
</cfoutput>

我尝试在MySQL端使用CAST和CONVERT,我在CF端尝试过CharSetEncodeing以及我能想到的ToString,ToBase64和ToBinary的每个选项。

我仍然无法让我的输出看起来像在数据库中一样。

2 个答案:

答案 0 :(得分:2)

感谢Leigh的帮助。我从来没有能够只用一步就能让它工作,所以我使用了两步解决方案(如果你想把它称之为)。我最后做的是设置我的MySQL语句将字段转换为无符号整数(尽管十进制或有符号整数也有效),然后一旦我读入十进制值,我就可以使用你的转换为二进制建议使用FormatBaseN(q1.myfield,2)。所以感谢FormatBaseN的提醒。我忘记了那个。

我的最终代码最终看起来像这样:

MySQL声明:

SELECT *, CONVERT(item , UNSIGNED) as di from mytable 

Coldfusion看起来像这样:

<cfset d = FormatBaseN(q1.di, 2)>

修改

写完之后,我决定采用Leigh的答案,因为这是一个更好的解决方案。

答案 1 :(得分:2)

实际上,我可能正在考虑SQL Server的位类型。对于MySQL,更简单的选择可能是使用bin()函数:

  

返回二进制值N的字符串表示形式......这相当于CONV(N,10,2)。返回   如果N为NULL,则为NULL。

例如:

  SELECT  bin(YourBitColumn) AS YourBitColumn FROM YourTable
  ... or 
  SELECT  bin(YourBitColumn+0) AS YourBitColumn FROM YourTable

注意: High-order 0 bits are not displayed in the converted value 。这也适用于CF功能。