【mysql varchar 字符串长度设定】教程文章相关的互联网学习教程文章

MySQL BIGINT(20)与Varchar(31)的性能

我已经读过,像primary unique key那样的bigint像23423423423423423637比像961637593864109_412954765521130那样的varchar更好,但是当有100万行时,如果我永远不会排序,而只选择/更新一行,那么差异有多大.对于我来说,使用varchar会更舒服,而当性能差异小于30%或任何其他情况时,我会坚持使用.我找不到任何基准.解决方法:这实际上必须加以衡量,我们可以根据我们所知道的和我们的假设做出一些“猜测”,但这只是猜测. 您没有提到此表是I...

将十进制值存储为mysql中的varchar是否很好?

我必须存储用户信用,可以是十进制格式,如(10.99,0.99等).现在我将列字段作为varchar(100). 如果我使用十进制而不是varchar怎么办?它会改善性能吗?解决方法:简短的回答是:不,这会伤害表现. 答案越长:VARCHAR字段的长度可变,这意味着数据库块的格式不能预先考虑填充数据的大小.当然,这个领域有一个最大长度,但除此之外,你的情况会更糟. 另一方面,读取VARCHAR然后将其解释为适合浮点类型将花费您.它引入了新的问题可能性.尝试获取...

如何在mysql中将奇怪的varchar“time”转换为实时?【代码】

我有一个时间值作为varchar(4)存储在数据库中,我需要将其转换为实时. 例如,如果时间是“23:59”,我想要在晚上11:59返回. 问题是小时和分钟之间没有“:”.所以当我运行这个查询SELECT TIME_FORMAT('2359', '%h:%i'); -- 12:23, wtf??但是,如果我运行这个:SELECT TIME_FORMAT('23:59', '%h:%i'); -- returns 11:59 as expected.所以,总结一下:1.时间存储为数据库中的varchar(4).例:1200, 1201, 0153, 1364, 1923>我希望时间...

MySQL表用varchar列作为外键【代码】

我试图创建一个varchar列作为外键的表,但MySql在创建表时给出了一个错误.我的查询是这样的:CREATE TABLE network_classes (id TINYINT(1) UNSIGNED NOT NULL AUTO_INCREMENT,category VARCHAR(80) NOT NULL,PRIMARY KEY(id),KEY `key_1` (`id`,`category`) ) ENGINE=InnoDB;CREATE TABLE networks (id TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,name VARCHAR(100) NOT NULL,category VARCHAR(80) NOT NULL,director_id TINYIN...

MySQL中的数据透视表 – 使用varchar格式的值转换为数据透视表【代码】

我希望转换Table1中的数据,如Pivot_table中数据的第一张图片所示.有可能在MySQL中这样做吗?因为数据透视表(A,B,C,D)的值是varchar数据格式,我不能像SUM那样使用MySQL的任何聚合函数.Table1: PK Name Subject Grade ------------------------------------- 1 Bob Math A 2 Bob History B 3 Bob Language C 4 Bob Biology D 5 S...

java – 调用mysql函数在hibernate中返回varchar【代码】

我试图在hibernate中使用mysql find_in_set字符串函数但不幸的是我无法使用它甚至尝试通过创建这些寄存器函数registerFunction("findInSet",newSQLFunctionTemplate(Hibernate.STRING,"FIND_IN_SET(?1,?2)")); registerFunction("findInSet",newSQLFunctionTemplate(Hibernate.INTEGER,"FIND_IN_SET(?1,?2)")); registerFunction("findInSet",new StandardSQLFunction("find_in_set", Hibernate.INTEGER));使用mysqldialect但没有人...

mysql中VARCHAR和TEXT之间的区别

当我们在mysql中使用VARCHAR列创建表时,我们必须为它设置长度.但对于TEXT类型,我们不必提供长度. VARCHAR和TEXT之间有什么区别?解决方法:TL; DR 文本 >固定最大大小为65535个字符(不能限制最大大小)>占用2个字节的磁盘空间,其中c是存储字符串的长度.>不能成为索引的一部分 VARCHAR(M) > M个字符的最大可变大小> M需要在1到65535之间>需要1 c字节(对于M≤255)或2 c(对于256≤M≤65535)磁盘空间字节,其中c是存储字符串的长度>可以是...

MySQL:大型VARCHAR与TEXT?

我在MySQL中有一个消息表,用于在用户之间记录消息.除了典型的id和消息类型(所有整数类型),我需要将实际的消息文本保存为VARCHAR或TEXT.我设置的前端限制为3000个字符,这意味着消息永远不会插入到数据库中,因为它比这更长. 是否有理由使用VARCHAR(3000)或TEXT?有一些关于编写VARCHAR(3000)的东西,感觉有点违反直觉.我已经浏览了Stack Overflow上的其他类似帖子,但是能够获得特定于此类公共消息存储的视图.解决方法:> TEXT和BLOB存储...

MySQL CASE EnumInt当Varchar ELSE Int作为BLOB返回时 – 如何转换为Varchar?【代码】

以下返回BLOB,如何将此else值转换为VARCHAR来修复我的问题?SELECTCASE EnumIDWHEN 1 THEN 'Red'WHEN 2 THEN 'Green'WHEN 3 THEN 'Blue'ELSE EnumIDEND AS EnumValue FROM Table在MSSQL / TSQL中,我使用ELSE CAST([EnumID] AS VARCHAR(100)),但MySQL抱怨. 我想要的只是故障转移,如果这个存储过程不知道新的枚举值来管理代码与主数据库与数据仓库数据持久性. 必然是一个明显的答案…… 显然问题似乎是使用VARCHAR?刚刚发现CAST(Enu...

在MySQL中的varchar字段中搜索整数值【代码】

我有一个名为user的表,如下所示:id || email --------------------------------- 1 || someone@foo.bar --------------------------------- 2 || 1manwithblueshirt@bar.foo ---------------------------------为什么是这样:1manwithblueshirt@bar.foo这个搜索的结果?SELECT * FROM user WHERE email = 1解决方法:因为MySQL决定将电子邮件转换为整数.规则是将前导字符转换为数字,直到字符不是有效数字. 这是一个简单的例子:s...

mysql – SQL varchar字符限制【代码】

我已经阅读了varchar的不同解释,到目前为止我已经得到了这个:CHAR( ) fixed from 0 to 255 characters long VARCHAR( ) variable from 0 to 255 characters long TINYTEXT maximum length of 255 characters TEXT maximum length of 65535 characters BLOB maximum length of 65535 characters MEDIUMTEXT maximum length of 16777215 characters MEDIUMBLOB maximum length of 16777215 ch...

mysql – 用于字符串长度最多为几千个字符的Varchar或文本数据类型

我有一个小型社交网站,有帖子和评论.我决定让用户创建他们想要的任意数量的帖子,我认为用于存储这些内容的最佳数据类型是Text.但是对于评论,在大多数情况下,用户只会写一行或几行文本.这就是为什么我认为我必须将注释字符串长度限制为最大3000或甚至6000个字符.那么,我应该使用什么数据类型来表达我的意见?Varchar还是Text?解决方法:VARCHAR和TEXT有各种不同的地方.我说的一些事情: >如果最大长度超过512个字符,请使用TEXT.>永远...

php – Mysql按VARCHAR字段插入订单号【代码】

我有一个关于通过特定订单类型插入行订单号的问题. Products表有OrderNumber字段.我想通过名称以编程方式将新行添加到适当的OrderNumber.如果引用列是整数,那么它必须很容易update products set OrderNumber=OrderNumber+1 where Price>555varchar字段有类似的方式吗?update products set OrderNumber=OrderNumber+1 where Name>'bla%'谢谢解决方法:你可以使用STRCMP(‘text’,’text2′)update products set OrderNumber=OrderN...

mysql – VARCHAR(255)之后的下一个最好的东西是什么

我有一张表,里面有大约200万条记录.我有一个名为message的字段,设置为varchar(160),我需要更大的varchar(255),因为我需要能够在其中存储大约500个字符,在不增加大小的情况下使用的下一个最佳数据类型是什么数据库大幅度? 谢谢解决方法:Starting with MySQL 5.0.3,你可以简单地使用VARCHAR(500).M represents the maximum column length in characters. In MySQL 5.0, the range of M is 0 to 255 before MySQL 5.0.3, and 0 to 65...

当日期在varchar中时,在mysql中过滤月份【代码】

我有一个名为id和publish_date的2列. publish_date采用varchar格式(例如2015-11-08 20:11:59).我使用以下代码根据月份过滤结果:SELECT * FROM 'table' WHERE MONTH(STR_TO_DATE(publish_date, '%d/%m/%Y')) = 11MySQL返回一个空结果集.这是怎么回事?解决方法:如果你已经参考了函数手册,你会看到第二个参数应该是给定的日期格式. https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date 如果...