首页 > 解决方案 > 字符串“abcdfghrdfthgywdcgrt”太长,将被截断

问题描述

询问:

创建表 SRC(SRC_STRING VARCHAR(20)) 创建或替换表 TGT(tgt_STRING VARCHAR(10))

插入 SRC 值('JKNHJYGHTFGRTYGHJ')

插入 TGT(TGT_STRING) 从 SRC 中选择 SRC_STRING::VARCHAR(10)

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

在将数据从高精度插入到低精度列时,有什么方法可以启用强制长度(不适用于 COPY 命令)?

标签: snowflake-cloud-data-platform

解决方案


我建议使用 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

这是有关该功能的文档:

https://docs.snowflake.com/en/sql-reference/functions/substr.html

我希望这会有所帮助...丰富

ps 如果这个(或另一个)答案对您有帮助,请花点时间“接受”有帮助的答案,方法是单击答案旁边的复选标记,将其从“灰色”切换为“已填写”。


推荐阅读