我正在使用amazon redshift,我需要在如下所示的临时表中更改名为“code”的列的值。
id code
--- ----
1 99990
2 A0002
3 0000F
我需要检查第一个和最后一个字符是否为数字,如果它们都是数字,则根据其范围更改列值(例如,当90000 <代码<99999时,设置code = 'category1‘)。
如果最后一个字符是字母表,则根据前4个字符的范围设置代码(例如,当0<代码:4<1000时设置代码= "category2“)
我现在有的是:
UPDATE tmp_table
SET code = 'category1'
WHERE substring(code,1,1) ~ '[0-9]'
AND 90000 <= CONVERT(INT,code) <= 99999 ;
然而,我得到的错误代码,如'A0002‘,错误信息是:无效的操作,无效的数字,值'A’。
我怀疑原因是当它没有满足第一个条件时,在第二个条件中,转换函数不能接受非数字值,从而引发了错误。但我不确定如何解决这个问题并得到我想要的东西。有什么建议吗?谢谢
https://stackoverflow.com/questions/57032066
复制相似问题