草庐IT

varchars

全部标签

mysql - 排序 varchar 列

我有一个ChaptersColumns,它的值如下Chapter1Chapter2Chapter11Chapter12Chapter3Chapter4当我订购它时,它显示为Chapter1Chapter11Chapter12Chapter2Chapter3Chapter4我需要这样的Chapter1Chapter2Chapter3Chapter4Chapter11Chapter12 最佳答案 这称为自然排序。你能试试这个吗?但没有完美的自然排序方法。SELECTcolFROMtabORDERBYLENGTH(col),col;即使前

mysql - 在 MySQL/Sequel Pro 中将 VARCHAR 列转换为 INT

我正在尝试将数据库中的列从VARCHAR设置为INT(值已经在数据库中)执行此操作时,会发生以下情况(示例):|number(varchar)|number(int||20090911913>2147483647||3009092113>2147483647|每个数字都是唯一的(具有VARCHAR值),当将列设置为INT时,所有值都变得相同(2147483647)。请注意,所有值都是VARCHAR时不包含字母(我检查过)现在我不知道为什么会这样,数据来自CSV,我在导入SequelPro时检查记录是否有不同的编号(不是2147483647)。在GUI中它显示它是不同的,但是当所有导入时

mysql - 如何使用数字搜索 varchar 列?

我有一个varchar(30)列,如下所示:953-41975-12952-13934-34该列的所有数字都采用以下结构:3个数字和一个短划线后跟更多数字。我想做一个像SELECT*FROMtablenameWHEREvalue=95341这样的查询并且仅使用WHERE子句中的数字获取'953-41'。我无法更改我的数据库并删除破折号,我需要在混合了我想要的数字和中间破折号的行上使用数值进行搜索。 最佳答案 你可以试试:数据库:SELECT*FROMtablenameWHEREvalue=INSERT(95341,4,0,'-')S

mysql - 在 MySQL 中索引 VARCHAR

与INT字段相比,VARCHAR字段的索引性能相同还是更差?我有一个包含两个字段的表(都是VARCHAR)。我想在第一列上创建一个索引。我心里有两件事。1.直接在第一个字段上创建索引。2.为第一个字段中的每个VARCHAR分配一个整数,并将它们存储在一个表中。然后用整数替换第一列中的VARCHAR,并在第一列上创建另一个表和索引(在这种情况下它将是整数列)。我将在这里得到两个不同的表。此外,如果我有4或5个表的第一个字段相同,并且必须在每个表的第一个字段上创建索引,第二种方法会提供更好的性能吗?提前致谢。 最佳答案 VARCHAR(

mysql - 主键 - UUID 主键的 VARBINARY 或 BLOB 或 VARCHAR

我在其中一个表中使用UUID作为主键。将此字段作为varchar/varbinary/blob有哪些优缺点? 最佳答案 基于文本的UUID和基于二进制的UUID之间的区别在于字节数很大-二进制表示为16个,而文本为30+个-因此二进制是可行的方法。我会选择VARBINARY而不是BLOB-如果只是因为VARBINARY是较新的类型(并且来自SQLServer背景,我知道VARBINARY那里可以存储在行中)。 关于mysql-主键-UUID主键的VARBINARY或BLOB或VARCHA

MySQL CASE EnumInt WHEN Varchar ELSE Int 返回为 BLOB - 如何转换为 Varchar?

以下返回一个BLOB,我如何将这个else值转换为VARCHAR来解决我的问题?SELECTCASEEnumIDWHEN1THEN'Red'WHEN2THEN'Green'WHEN3THEN'Blue'ELSEEnumIDENDASEnumValueFROMTable在MSSQL/TSQL中我使用ELSECAST([EnumID]ASVARCHAR(100))但是MySQL提示。我想要的只是一个故障转移,如果这个存储过程不知道一个新的枚举值来管理代码、主数据库和数据仓库数据持久性。必然是一个显而易见的答案...显然问题似乎出在使用VARCHAR上?刚发现CAST(EnumIDASCHA

mysql - 在 MySQL 的 varchar 字段中搜索整数值

我有一个名为user的表,如下所示:id||email---------------------------------1||someone@foo.bar---------------------------------2||1manwithblueshirt@bar.foo---------------------------------这是为什么:1manwithblueshirt@bar.foo此搜索的结果?SELECT*FROMuserWHEREemail=1 最佳答案 因为MySQL决定将电子邮件转换为整数。规则是将前导

mysql - SQL varchar 字符限制

我已经阅读了对varchar的不同解释,到目前为止我已经得到了这个:CHAR()fixedfrom0to255characterslongVARCHAR()variablefrom0to255characterslongTINYTEXTmaximumlengthof255charactersTEXTmaximumlengthof65535charactersBLOBmaximumlengthof65535charactersMEDIUMTEXTmaximumlengthof16777215charactersMEDIUMBLOBmaximumlengthof16777215charac

mysql - Varchar 或文本数据类型,字符串长度可达几千个字符

我有一个小型社交网站,上面有帖子和评论。我决定让用户使用他们想要的任意数量的字符创建帖子,我认为存储此类内容的最佳数据类型是文本。但是对于评论,在大多数情况下用户只写一行或几行文字。这就是为什么我认为我必须将评论字符串的长度限制为最多3000甚至6000个字符。那么,我的评论应该使用什么数据类型?Varchar还是Text? 最佳答案 VARCHAR和TEXT有很多不同之处。我说的一些话:如果最大长度超过512个字符,请使用TEXT。永远不要使用TINYTEXT——它只有相对于VARCHAR(255)的负值。不要使用VARCHAR(

mysql - 确保 MYSQL/InnoDB 中大于 255 的 varchar 的唯一性

我有一个包含URL的表格,其中一些超过255个字符。我想对URL列施加唯一性约束,但MySQL不允许我在URL上创建键。我正在使用InnoDB/UTF8表。据我了解,每个字符使用多个字节,key限制为766个字节(在InnoDB中)。根据URL保持行唯一性的优雅方法是什么? 最佳答案 对于MySQL5.7或更新版本,请参阅AndreDalcher'sanswer以更好的方式使用生成的列。你可以使用SHA1hashurl作为唯一键。有可能两个url具有相同的哈希值,但这种可能性小得离谱,因此出于实际目的,此方法应该可以正常工作。您还可