Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何修剪sql中的数据_Mysql - Fatal编程技术网

Mysql 如何修剪sql中的数据

Mysql 如何修剪sql中的数据,mysql,Mysql,我已经创建了一个表 CREATE TABLE Persons ( PersonID int, LastName varchar(5), FirstName varchar(5), Address varchar(5), City varchar(5) ); 在该表中,我插入了一个数据 INSERT INTO Persons (PersonID,LastName,FirstName, Address,City ) VALUES ('1','TomBEri

我已经创建了一个表

CREATE TABLE Persons (
    PersonID int,
    LastName varchar(5),
    FirstName varchar(5),
    Address varchar(5),
    City varchar(5) 
);
在该表中,我插入了一个数据

INSERT INTO Persons (PersonID,LastName,FirstName, Address,City )
VALUES ('1','TomBErichsen','Skagen212','Stavanger3','c4006333');
数据正在插入

1  TomBErichsen Skagen212 Stavanger3  c4006
但我的问题是我创建了一个存储元素5。如果我输入超过5个 瓦尔查尔 所有字符都已存储。我必须避免这样。数据应该这样存储

1 TomBe Skage  Stavan   c4006
超过5封信。如果输入的字母超过5个,则应删除数据。我如何才能做到这一点?

您可以使用子字符串函数

INSERT INTO Persons (PersonID,LastName,FirstName, Address,City )
VALUES ('1',SUBSTRING('TomBErichsen',1,5),SUBSTRING('Skagen212',1,5),SUBSTRING('Stavanger3',1,5),SUBSTRING('c4006333',1,5));

首先,您应该知道char和var char数据类型的区别。因此,差异如下

煤焦

固定长度。 最大字符长度为255。 它比Varchar快50%。 Char使用静态内存存储数据。 瓦尔查尔

用于存储可变长度的字母数字数据。 此数据类型最多可容纳MySQL 5.0.3之前版本的255个字符。 在MySQL 5.0.3+中:为行共享65535个字符。 它比CHAR使用动态内存分配慢。 在您的问题中,您可以使用如下所示的子字符串

子寄存器,位置,len

STR—从中返回子字符串的字符串。POS An 表示字符串str.LEN中字符串位置的整数 整数,指示要返回的字符数。 SUBSTR函数与SUBSTRING函数相同

结果是:

    mysql> SELECT SUBSTR('Buddhika',4,3);
+--------------------------+
| SUBSTR('Buddhika',4,3) |
+--------------------------+
| dhi                      | 
+--------------------------+
1 row in set (0.01 sec)

谢谢。

如果超过5,肯定会导致插入失败,MYSQL返回一个错误?您想使用纯sql还是使用某种程序语言,比如java?一种解决方法是提供来自HTML表单的数据,您可以使用它来避免人们输入长得离谱的输入。您确定要插入此记录吗?您在撒谎@Fire-我得到了这个错误-数据对于第1行的“LastName”列太长
    mysql> SELECT SUBSTR('Buddhika',4,3);
+--------------------------+
| SUBSTR('Buddhika',4,3) |
+--------------------------+
| dhi                      | 
+--------------------------+
1 row in set (0.01 sec)