这就是问题所在。在 MySQL 的 Connector/NET 中,TINYINT(1)字段正确地来回转换为 .NET bool 值。如果我从带有一TINYINT(1)列的表中进行选择,则一切都是金色的。但是,当您使用内置 MySQL v5.0 函数时,例如:
SELECT (3 BETWEEN 2 AND 4) AS oddly_not_boolean;
Run Code Online (Sandbox Code Playgroud)
数据库的实际返回类型将此字段注册为INTor BIGINT,Connector/.NET 显然不会将其转换为 bool。MySQLCAST()并且CONVERT()不允许强制转换为TINYINT(1).
我什至尝试使用用户功能来做到这一点, 但这也不起作用(编辑:这确实有效):
CREATE FUNCTION `to_bool`(var_num BIGINT)
RETURNS TINYINT(1) RETURN var_num;
Run Code Online (Sandbox Code Playgroud)
如何在 MySQL 中的查询中将an 转换INT为 a TINYINT(1)?
编辑:上面的函数确实可以将值转换为 a TINYINT(1),但我的连接器/NET 只是被窃听,无法正确转换函数中的值。
2009 年 11 月 3 日更新:更新了我的连接器,它仍然返回 Int32。进一步测试表明,这是MySQL 5.0.x 中的InnoDB 错误,仅在特定情况下才会显示。
我的GUI上有6个按钮.可以通过复选框配置按钮的可见性.选中复选框并保存意味着应显示相应按钮.我想知道是否有可能在数据库中有一个TinyInt列表示所有6个按钮的可见性.
我为按钮创建了一个枚举,看起来像这样:
public enum MyButtons
{
Button1 = 1,
Button2 = 2,
Button3 = 3,
Button4 = 4,
Button5 = 5,
Button6 = 6
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道怎么说,例如只使用这一列检查button1,button5和button6.可能吗?
谢谢 :-)
在mySQL数据库中存储true/false/1/0值的最合适(读取最少数据)数据字段是什么?
我以前使用过一个字符长的tinyint,但我不确定它是否是最好的解决方案?
谢谢!
我有一种情况,我需要将MySQL数据库中的TINYINT视为数值,而不是TRUE/FALSE.
根据我的理解,MySQL .Net Connector用于将TINYINT映射为Byte.不幸的是,似乎不再是这种情况,TINYINT现在映射到布尔值.我需要像往常一样将TINYINT转换为Byte.我知道连接字符串参数'Treat Tiny As Boolean = False'应该可以解决这个问题.出于某种原因,这在使用实体框架时似乎不起作用.有任何想法吗?
我想将可以存储在字段中的数据类型值限制为特定范围的整数值:[0,10].
在PHP脚本中的用户输入中,我验证并清理数据以确保它在0到10的范围内.但是,有没有办法通过某种数据类型或约束来确保在投票表本身中保持这个?
目前我将int值存储在UNSIGNED TINYINT中,当然其范围为0-255.我知道ENUM是一个选项.但是,我已经读过使用数字时不建议:http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/
SQL:
CREATE TABLE votes (
vote_id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
article_id MEDIUMINT UNSIGNED NOT NULL,
user_id MEDIUMINT UNSIGNED NOT NULL,
user_vote TINYINT UNSIGNED NOT NULL,
PRIMARY KEY (vote_id),
FOREIGN KEY (article_id) REFERENCES articles (article_id) ON DELETE CASCADE ON UPDATE NO ACTION,
FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT article_uservoted UNIQUE KEY (user_id, article_id),
INDEX vote_value (article_id, user_id, user_vote)
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)
我希望有人可以提供帮助.
我意识到这tinyint是一个单字节整数(顺便说一下,它是有符号还是无符号?).这个论点(3)意味着什么?我搜索过,找不到答案.
请赐教...
哪种数据类型消耗最小,TINYINT(1) 或 BIT(1)?
我知道根据这里的大多数答案,TINYINT(1) 和 BIT(1) 被认为是相同的。
TINYINT(1) 不接受 0-9 而 BIT(1) 只能接受 1 或 0。从它的外观来看,TINYINT 使用更大的存储空间,因为它可以接受 2-9 而 BIT 只能接受 1 和 0。
例如,如果TINYINT可以存储三个字符,为什么它不能存储到999?
我的数据库表中有一个状态列.键入:tinyint(4),默认值为0.我想将默认值更改为1.如何做?可能这是一个非常简单的问题,但我不知道.
确实是一个安心的问题。
我的数据库中有一个用作tinyint(3)整数值的字段。我现在意识到这个值太低了,想将其更改为smallint. 如果我使用 phpMyAdmin 更改此设置,当前数据是否会受到影响?我在本地尝试过,看起来不错,但我更喜欢由具有更多数据库经验的人来运行它。