我应该选择尽可能小的数据类型,或者如果我存储值 1,那么 col 数据类型是什么并不重要,并且该值将占用相同的内存大小?
问题还在于,因为我总是必须转换它并在应用程序中使用。
更新
我认为如果 value 是“a”,则 varchar(1) 和 varchar(50) 的内存大小相同,我认为 int 和tinyint 是相同的,根据我理解的答案,它不是,是吗?
我需要在1个表中存储5个布尔值.每个值都可以存储为tinyint(4).所以,有5个tinyint(4).我想在一个tinyint(4)中放入5个布尔值.我相信,每个人都知道比我更好,5位可以被保存在1个字节,没有问题:)第一个值可以存储为0(假)或1(真),第二为0(假)或2( true),第三个为0或4,第四个为0或8,第五个为0或16.因此,如果我们将这些值的总和存储在tinyint(4)中,我们确切地知道5个布尔值.
For example, stored 21 -> 16 + 4+1.
So, if 21 is stored, we know that:
Fifth=true
Fourth=false
Third=true
Second=false
First=true.
Run Code Online (Sandbox Code Playgroud)
我的问题是:只保留1个变量是否有意义?我们赢了分贝量(字节)和性能(4列少,但这只是4个字节,而你实际使用在同一个表的varchar(1000)),但是每次我们有时间来"提取"从"和适当的布尔值"使用php功能,这种情况经常发生(假设当用户按下按钮时).将布尔值存储为1列中的总和是否都有意义,因此您有7列而不是11列?
这个值很清楚(因为那个表有更多的行只有2个),不是键.
谢谢.
我正在基于MySQL数据库中的现有表创建Java持久性实体Bean(使用NetBeans IDE 8.0.1).我在这个表中遇到了一个类型为"Unsigned TINYINT(3)"的字段.我发现可以执行以下操作来将列的类型定义为unsigned int:
private long foo;
@Column(columnDefinition = "UNSIGNED INT(11)")
public long getFoo()
{
return foo;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个字段如下:
@Size(max = 3)
@Column(name = "WorkingHours", columnDefinition="UNSIGNED TINYINT(3) default '40'")
private Integer workingHours;
Run Code Online (Sandbox Code Playgroud)
将项目部署到我的服务器时收到以下错误:
{"JBAS014671: Failed services" => {"jboss.persistenceunit.\"my-project.ear/my-project-ejb.jar#old-db\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"my-project.ear/my-project-ejb.jar#old-db\": javax.persistence.PersistenceException: Unable to execute JPA schema generation create command [create table ... etc.]
Caused by: javax.persistence.PersistenceException: Unable to execute JPA schema generation create command [create table ... etc.]
Caused by: …Run Code Online (Sandbox Code Playgroud) 所以tinyint我的数据库中有一个数据类型列,我在其中存储了从0to 的值2。
我的理解是 MySQL 将列中的任何非零数字tinyint视为真(在本例中为1和2),将0视为假。但是,当我执行从tinyint行所在的表中检索某些信息的查询时true,它仅适用于具有1作为值的行。换句话说,具有2作为值的行不被true查询0视为(并且被视为false)。查询将类似于:
SELECT data FROM table WHERE active=true
Run Code Online (Sandbox Code Playgroud)
其中active是数据类型,tinyint并且之前已为其分配值0,1或2视情况而定。
我对 MySQL 还很陌生,所以我不知道这里是否有一些细节我可能会遗漏,但我不明白为什么它没有在值为 2 的行上返回请求的数据。任何想法都可以在这里提供帮助。
这更多的是一个学术问题。在MySQL数据库中,我知道tinyint(M)及其与tinyint(1)的区别已经在这个网站上讨论过,但我想知道其他的事情。
是否可以使用“REVIEWED TINYINT(5)”列来存储前端表单中 5 个不同布尔复选框的值?我正在考虑将其视为数组。如果是这样,它们将如何被引用?像 REVIEWED(3) 或 REVIEWED[3] 一样用于引用它们的元素?是否有一种语法来检查它们的所有元素是否为 1 或 0(或 null)?
我正在尝试使用msdb.dbo.sp_update_schedule更新SQL Server代理程序计划,但是当我尝试从代码调用存储过程时,我得到异常.
System.Data.OleDb.OleDbException:将数据类型int转换为tinyint时出错.
在System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior,String method)
在System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
如何将值转换为tinyint?
我试过了
MyParameter.DbType = System.Data.DbType.
Run Code Online (Sandbox Code Playgroud)
但是没有TinyInt可用.
我的查询tinyint(1)从 mysql 中的表中获取字段,如下所示
mysqlcommand.selectquery="select vehicletype from vehicles where id=1"
Run Code Online (Sandbox Code Playgroud)
可能的值为vehicletype1 到 7
但该datatable字段行中的输出显示为boolean
datatable dtresult;
mda.Fill(dtResult);
DataRow dr = dtResult.Rows[0];
//dr["vehicletype "]=false if 0
//dr["vehicletype "]=true if 1
//dr["vehicletype "]=true if 2
//dr["vehicletype "]=true if 3
//dr["vehicletype "]=true if 4 etc...
Run Code Online (Sandbox Code Playgroud)
当我dr["vehicletype "]在 Visual Studio 中看到 的值时,它显示false为 0 和true任何其他值。如何防止它进行默认转换
tinyint ×7
mysql ×5
sql ×3
c# ×2
sqldatatypes ×2
ado.net ×1
boolean ×1
int ×1
java ×1
jpa ×1
performance ×1
sql-server ×1
unsigned ×1
where-clause ×1