SQL - 更改字母数字列的数据类型
SQL - Changing data type of an alphanumeric column
我在使用 Teradata。我有一个 ID 列,如下所示:
23
34
W7
007
021
90
GS8
我想将数字转换为数字,所以 007 应该是 7,021 应该是 21。当数字存储为字符串时,我通常会 column * 1
转换为数字,但在这种情况下给我一个错误的字符错误,因为那里有字母。
如何在查询中的 select 语句中执行此操作?
假设数值总是以数字开头,那么这样的事情应该可行:
update t
set col = (case when substr(col, 1, 1) between '0' and '9'
then cast(cast(col as int) as varchar(255))
else col
end);
或者,您可以忘记转换并执行:
update t
set col = trim(leading '0' from col);
注意:这两个假设如果第一个字符是数字那么整个字符串都包含数字。第二个假定值不全为零(或者更具体地说,returns 为空字符串)。
简单地使用 TO_NUMBER(col)
其中 returns NULL 当转换失败时。
我在使用 Teradata。我有一个 ID 列,如下所示:
23
34
W7
007
021
90
GS8
我想将数字转换为数字,所以 007 应该是 7,021 应该是 21。当数字存储为字符串时,我通常会 column * 1
转换为数字,但在这种情况下给我一个错误的字符错误,因为那里有字母。
如何在查询中的 select 语句中执行此操作?
假设数值总是以数字开头,那么这样的事情应该可行:
update t
set col = (case when substr(col, 1, 1) between '0' and '9'
then cast(cast(col as int) as varchar(255))
else col
end);
或者,您可以忘记转换并执行:
update t
set col = trim(leading '0' from col);
注意:这两个假设如果第一个字符是数字那么整个字符串都包含数字。第二个假定值不全为零(或者更具体地说,returns 为空字符串)。
简单地使用 TO_NUMBER(col)
其中 returns NULL 当转换失败时。