草庐IT

mysql - UTF-8 的 Varchar?

我找到了一篇关于此的类似帖子,但仍不确定。当我制作我的留言簿等多语言时,我在mysql中将排序规则更改为uft8_unicode_ci,一切正常,我没有想到的是我使用的类型,我的留言簿是多语言的并且对于名称字段,用户不能输入超过50个字符,主题相同,留言簿消息不能超过800个字符。现在在PHP中执行此检查很简单,即。在strlen等之前使用mb_检查字符串长度。但我担心数据可能会在mysql中被截断。显然普通字符可以,但是当它是汉字和其他非标准字符时,这显然是我的一个问题,因为我不知道varchar将如何计算它们。 最佳答案 从my

mysql - 限制mysql表中的字符数

创建MySQL表时限制位数为int(5)有用吗?我认为int(5)和int(11)几乎相同,并且使用4个字节的存储空间。varchar(50)和varchar(255)的类似情况。我对吗?或者在创建表格时限制字符数(数字)有好处吗? 最佳答案 int(5)和int(11)的存储方式相同,数字只是一个表示选项,称为“显示宽度”。某些应用程序可能会在显示字段时使用它来填充字段。对于varchar,数字表示可以存储的字符串长度的上限。由于varchar字段的大小可变,实际使用的字节数可能等于或小于它。此限制甚至可以用作基本的验证形式。

php - 如何规范这个汽车零件数据库?

我是PHP/数据库的新手...但我很快就学会了。我想问你们的问题很简单。我想规范化我的数据库,但不确定如何去做。我明白了这个概念,但看到了多种方法来做到这一点。图我会问有经验的人。这是我的数据库(目前有2个表):品牌产品***BrandsBreakdown:***1idint(6)**Note:**Above,Iwillprobablyuse4-Lettercodesforeachbrandinsteadofprimary/int/auto.2nametext3logovarchar(20)4phonevarchar(20)5websitevarchar(30)6contact_nam

php - MySQL 在整数前不存储零(字段设置为文本(或 varchar))

我正在通过HTML将表单提交到POSTPHP页面,然后该页面将该信息存储到MySQL数据库中。输入字段之一是可以从零开始的数字字段。我已将HTML数据类型设置为表单上的文本,并尝试将MySQL数据类型设置为文本和varchar,并且在整数被删除之前两次都为零。我不太确定我做错了什么。这是我创建表的PHP代码:$sql="CREATETABLEIFNOTEXISTS$tablename_db(IDintNOTNULLAUTO_INCREMENT,PRIMARYKEY(ID),numtext(4),amntDECIMAL(8,2));";下面是表单域的样子:#(last4digits):A

mysql - 从 varchar 字段获取最大值

我有一个varchar字段作为我的员工ID,它的格式如下:格式:YYYY-DateHired-Number示例:2012-1203-0001但是我很难插入新记录,因为要插入一个新的递增ID,在增加它之前,我需要获取该字段中的最新值。如何获取最近一年中最新/最高(MAX)Number的行?提前致谢:) 最佳答案 假设您的EmployeeID的格式是YYYY-MMdd-XXXX。试试这个,SELECTMAX(EmployeeID)FROMtableNameWHEREEmployeeIDLIKECONCAT(SUBSTRING(Emplo

mysql - Mysql 上的 Varchar 问题 2147483647

遇到2147483647MYSQL问题。当在电话字段中插入一个11位数字时,我得到这个号码作为返回保存在DB:2147483647TEL设置为VARCHAR而不是INT很难。此外,在SERVER1上托管的数据库上,我有完全相同的数据库表,但没有遇到同样的问题?!可能是什么?这是SQL和PHPtel_novarchar(20)utf8_general_ciYesNULLmob_novarchar(20)utf8_general_ciYesNULL这就是MYSQL。是的,我在数据库中插入一个11位数字作为字符串$telno=GetValue($post['tel_no']);$mobno=

mysql - SQL触发器不工作

您好,我有一个学生表,其中包含用户名、用户类型、密码等列。我已经为此表编写了一个触发器,它为用户类型“学生”创建了一个用户名,这是触发器代码>DROPTRIGGER`sasis`.`USERNAMEAutoGen`;DELIMITER||CREATETRIGGER`sasis`.`USERNAMEAutoGen`BEFOREINSERTON`sasis`.`userinfo`FOREACHROWBEGINif(usertype=='Student')declareivarchar(2);declareusrnmvarchar(20);declarefullusrnmvarchar(25

mysql - 排序 varchar 列

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

mysql - 在 phpmyadmin 中创建触发器时出错

我创建了非常简单的触发器,我认为syntex也是正确的:CREATETRIGGERtrig1afterINSERTONurlcontentforeachrowBEGINinsertintouserpost(userid,url,hash)values(userid,url,hash);END;给出错误:#1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在第3行的''附近使用的正确语法两个表的结构:CREATETABLEurlcontent(useridtextNOTNULL,urlvarchar(255)NOTNULL,`desc`varchar(2048

MySQL 数据类型超出范围

我有下表:CREATETABLEentries(idINT(10000)UNSIGNEDAUTO_INCREMENTPRIMARYKEY,firstNameVARCHAR(60),surnameVARCHAR(60),courseVARCHAR(250),subjectVARCHAR(500),levelVARCHAR(10),dateTimeDATETIME);但我收到以下错误:ERROR1439(42000):Displaywidthoutofrangeforcolumn'id'(max=255)最大值为255的原因是什么?我以为最大值是4294967295?有什么想法吗?