你会在哪些情况下使用哪种?有什么区别吗?我通常使用持久性引擎来存储布尔值?

我试图将位值插入或编辑为"0"或"1",但要么返回空白.
有人能告诉我如何在其中插入值吗?
另外,这可能不使用位类型而是布尔值吗?我看到类型列表中有一个布尔类型
谢谢
嗨,我已经上传了图片,表中的单元格是空白的,但是我已经尝试了几次,添加,更新,都生效了,但是单元格保持空白...
我正在使用bit(1)字段来存储布尔值并使用PDO预处理语句写入表中.
这是测试表:
CREATE TABLE IF NOT EXISTS `test` (
`SomeText` varchar(255) NOT NULL,
`TestBool` bit(1) NOT NULL DEFAULT b'0'
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
这是测试代码:
$pdo = new PDO("connection string etc") ;
$statement = $pdo->prepare('INSERT INTO `test` (SomeText,TestBool) VALUES (?,?)') ;
$statement->execute(array("TEST",0)) ;
Run Code Online (Sandbox Code Playgroud)
运行该代码在TestBool下给我一行值为1的行.使用bindValue()和bindParm()也是一样的.我也尝试过具有相同结果的命名占位符(而不是?).
然后我尝试了:
$statement = $pdo->prepare('INSERT INTO `test` (SomeText,TestBool) VALUES ("TEST",0)') ;
$statement->execute() ;
Run Code Online (Sandbox Code Playgroud)
哪个工作正常(TestBool的值为0).将SQL直接打入MySQL也行之有效.
请注意,插入1始终有效.
那么为什么占位符无法插入值0?(我怎么做呢?)
可能重复:
用于存储布尔值的MySQL数据类型是什么?
我是一名.NET程序员,并且是我生命中第一次使用MySQL数据库.
我想存储布尔值,MySQL有BIT,但这种数据类型的.NET转换是UINT64.
还有另一种数据类型TINYINT(1),其.NET等价物System.Boolean将用于我的目的.
但是为什么我会使用TINYINT(1)(它可以存储123,22这样的值)而不是BIT,它会占用更多的空间BIT(我猜)?使用它可能是合法的,但我不认为它是etical.
有人可以帮助并澄清我的疑问吗?
我正在尝试创建一个新列作为布尔类型,但我无法在列表中找到它...任何帮助?
5.2.37和ubuntu 11.10
在mySQL数据库中存储true/false/1/0值的最合适(读取最少数据)数据字段是什么?
我以前使用过一个字符长的tinyint,但我不确定它是否是最好的解决方案?
谢谢!
我已经看到了一个Yes/No形式的单选按钮值,可以通过几种不同的方式存储/保存.我想知道哪种方式更好,为什么?这是针对PHP/MySQL应用程序的一个典型的是/否问题作为表单的一部分.
1.)将其存储为1,0或null.1为是,0为否,无回答为空.
2.)将其存储为是,否,为空.假设可以进行语言转换.
3.)使用1,2和null,以便更好地区分值.
谢谢,杰夫
编辑:我还必须提到,由于jQuery/JavaScript以及比较和$()绑定,大多数问题都已出现.
我得到Hibernate异常:
错误的列类型.发现:位,预期:BOOLEAN DEFAULT TRUE
我有班级用户:
package mypackage;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(name = "USER")
public class User {
@Id
@GeneratedValue
@Column(name = "ID", unique = true, nullable = false)
private Long id;
@Column(name = "STATUS", columnDefinition = "BOOLEAN DEFAULT TRUE",
nullable = false)
private Boolean status = Boolean.TRUE;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
如果Hibernate在数据库中创建表本身,这可以正常工作.什么时候
<property name="hibernate.hbm2ddl.auto">create</property>
Run Code Online (Sandbox Code Playgroud)
要么
<property name="hibernate.hbm2ddl.auto">create-drop</property>
Run Code Online (Sandbox Code Playgroud)
但如果
hibernate.hbm2ddl.auto为验证 然后我用Hibernate生成的表再次运行我的程序
<property name="hibernate.hbm2ddl.auto">validate</property>
Run Code Online (Sandbox Code Playgroud)所以我得到了例外:
org.hibernate.HibernateException:dbtest.user中列STATUS的列类型错误.发现:位,预期:BOOLEAN DEFAULT TRUE
任何想法Hibernate的这种行为的原因是什么,我该如何解决它?
我用MySQL server 5.1 …
假设我有一个像这样的复选框搜索表单:
检查您感兴趣的所有内容:
我是否可以从数据库中请求此数据,而不必将数吨布尔值添加到此类数据库中?
(VenueId,IfBowling,IfBilliard,IfSweets)
也许只有一列可以包含场地本身具有的所有选项?
0/1可以灵活,并且可以在将来添加诸如"2,3,4"之类的选项.
TINYINT在MySQL中占用的空间是否比布尔值多?
就个人而言,我使用0和1作为一切.
您可以在常规编程(或MySQL,无论您喜欢哪种)的上下文中回答这个问题.
我用一些布尔字段制作了表格.
CREATE TABLE PM_ADMIN_LIST( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(250) NOT NULL, password VARCHAR(250) NOT NULL, mail VARCHAR(250) NOT NULL, added_time INT, super_admin VARCHAR(250) NOT NULL, last_time INT, last_ip VARCHAR(250), see_user_per BOOLEAN DEFAULT FALSE, change_user_per BOOLEAN DEFAULT FALSE, see_people_per BOOLEAN DEFAULT FALSE, change_people_per BOOLEAN DEFAULT FALSE, add_people_per BOOLEAN DEFAULT FALSE, remove_people_per BOOLEAN DEFAULT FALSE, see_album_per BOOLEAN DEFAULT FALSE, add_album_per BOOLEAN DEFAULT FALSE, change_album_per BOOLEAN DEFAULT FALSE, remove_album_per BOOLEAN DEFAULT FALSE, see_music_per BOOLEAN DEFAULT FALSE, add_music_per BOOLEAN DEFAULT FALSE, …
从ajax查询中选择一个复选框的mysql返回的值存在问题。但是我能使它起作用的唯一方法是将mysql中的值设置为NULL。但是0或1每次都会返回检查。在mysql中,我将其设置为tinyint(1)。