Snowflake cloud data platform 字符串“abcdfghrdfthgywdcgrt”太长,将被截断

Snowflake cloud data platform 字符串“abcdfghrdfthgywdcgrt”太长,将被截断,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,查询: 创建表src_STRING VARCHAR20 创建或替换表TGTtgt_字符串VARCHAR10 在SRC值中插入'JKNHJYGHTGRTYGHJ' 插入到TGTTGT_字符串中,从SRC中选择SRC_字符串::VARCHAR10 错误:字符串“jknhjyghtgrtyghj”太长,将被截断 在将数据从高精度列插入到低精度列时,是否有任何方法可以为COPY命令启用enforce lengthnot?我建议使用SUBSTR函数来选择所需的数据段,示例如下:如果可用,我将使用前10个字

查询:

创建表src_STRING VARCHAR20 创建或替换表TGTtgt_字符串VARCHAR10

在SRC值中插入'JKNHJYGHTGRTYGHJ'

插入到TGTTGT_字符串中,从SRC中选择SRC_字符串::VARCHAR10

错误:字符串“jknhjyghtgrtyghj”太长,将被截断


在将数据从高精度列插入到低精度列时,是否有任何方法可以为COPY命令启用enforce lengthnot?

我建议使用SUBSTR函数来选择所需的数据段,示例如下:如果可用,我将使用前10个字符,如果只有5个,则将使用这5个字符

CREATE OR REPLACE TEMPORARY TABLE SRC(
    src_string VARCHAR(20));

CREATE OR REPLACE TEMPORARY TABLE TGT(
    tgt_STRING VARCHAR(10));

INSERT INTO src 
VALUES('JKNHJYGHTFGRTYGHJ');

INSERT INTO tgt(tgt_string) 
SELECT SUBSTR(src_string, 1, 10) 
FROM SRC;

SELECT * FROM tgt; --JKNHJYGHTF
以下是有关该函数的文档:

我希望这有助于…Rich


p、 如果此答案或其他答案对您有帮助,请花点时间接受答案,方法是单击答案旁边的复选标记,将其从灰色变为填充。

将数据从高varchar长度列复制到低varchar长度列不是问题。你在找什么?更新了描述,是关于sql INSERT语句而不是COPY命令。我知道SUBSTR函数,正在寻找类似于强制长度的选项,但在雪花文档中找不到此类选项。听起来你在寻找与COPY命令中强制长度选项完全相同的功能,这不是本机可用的,但构造起来相当容易。错误选项可以与上述原始答案一起复制。true选项可以通过下面的命令进行复制,尽管它不会失败,但它只插入零条记录。插入到tgttgt\ U字符串中,从SELECT src\ U字符串中选择src\ U字符串,从src中选择MAXLENGHTSRC\ U字符串作为max\ U长度,其中max\ U长度