我的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的每个选项。
我仍然无法让我的输出看起来像在数据库中一样。
答案 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功能。