小编vik*_*kas的帖子

错误代码:1406.列的数据太长 - MySQL

错误代码:1406.列的数据太长

CREATE  TABLE `TEST` 
(

  `idTEST` INT NOT NULL ,

  `TESTcol` VARCHAR(45) NULL ,

  PRIMARY KEY (`idTEST`) 
);
Run Code Online (Sandbox Code Playgroud)

现在Insert一些价值观

INSERT INTO TEST
VALUES
(
    1,
    'Vikas'
)

select 

SELECT * FROM TEST;
Run Code Online (Sandbox Code Playgroud)

插入记录多于 length

INSERT INTO TEST
VALUES
(
    2,
    'Vikas Kumar Gupta Kratika Shukla Kritika Shukla'
)
Run Code Online (Sandbox Code Playgroud)

如果我们selectlength

SELECT LENGTH('Vikas Kumar Gupta Kratika Shukla Kritika Shukla')

 '47'
Run Code Online (Sandbox Code Playgroud)

它显示错误消息

错误代码:1406.列的数据太长

但我的期望是,我想在表格中插入至少前45个字符

如果问题不明确,请告诉我.

我知道这个错误的原因.我试图插入超过数据类型长度的值.

我想要MySQL中的解决方案,因为它可能在MS SQL.所以我希望它也会出现在MySQL中.

mysql sql sql-server

18
推荐指数
1
解决办法
10万
查看次数

匹配 SQL Server 列中的逗号分隔值

我想在 SQL Server 表单元格中插入多封电子邮件,在插入它们之前,我需要检查这些值是否已经存在。

如需更多说明

Row_id        EMAIL_ID
  1           abc@xyz.com,abcabc@xyz.com, abc2@xyz.com
  2           pqr@xyz.com,pqrabc@xyz.com
Run Code Online (Sandbox Code Playgroud)

现在,如果我插入abcabc@xyz.com,free@xyz.com,它将显示该值是重复的。

我做了这个

select EMAIL_ID
from TR_DEMO
INNER JOIN dbo.split('abcabc@xyz.com,free@xyz.com', ',') s
ON s.items IN (select items from dbo.split(EMAIL_ID, ',') )
Run Code Online (Sandbox Code Playgroud)

功能

CREATE FUNCTION [dbo].[Split]
(
    @String varchar(8000), 
    @Delimiter char(1)
)       
returns @temptable TABLE (items varchar(8000))       
as       
begin       
    declare @idx int       
    declare @slice varchar(8000)       

    select @idx = 1       
        if len(@String)<1 or @String is null  return       

    while @idx!= 0       
    begin       
        set @idx = charindex(@Delimiter,@String)       
        if @idx!=0       
            set @slice …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

sql ×2

sql-server ×2

mysql ×1