错误代码: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)
如果我们select的length
SELECT LENGTH('Vikas Kumar Gupta Kratika Shukla Kritika Shukla')
'47'
Run Code Online (Sandbox Code Playgroud)
它显示错误消息
错误代码:1406.列的数据太长
但我的期望是,我想在表格中插入至少前45个字符
如果问题不明确,请告诉我.
我知道这个错误的原因.我试图插入超过数据类型长度的值.
我想要MySQL中的解决方案,因为它可能在MS SQL.所以我希望它也会出现在MySQL中.
我想在 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)