在PostgreSQL中将列的数据类型更改为整数(带n/a的列)
我在PostgreSQL 11.0中有一个列(phase_mapped),包含整数和n/a值。nchar(3)中列的当前数据类型。我想将此列的数据类型转换为整数,但n/a抛出错误。如何设置此类列的int数据类型在PostgreSQL中将列的数据类型更改为整数(带n/a的列),postgresql,Postgresql,我在PostgreSQL 11.0中有一个列(phase_mapped),包含整数和n/a值。nchar(3)中列的当前数据类型。我想将此列的数据类型转换为整数,但n/a抛出错误。如何设置此类列的int数据类型 phase phase_mapped Phase 1 1 Phase 2 2 n/a n/a 我试着回答以下问题 ALTER TABLE table ALTER COLUMN phase_mapped TYPE INT USING phase_map
phase phase_mapped
Phase 1 1
Phase 2 2
n/a n/a
我试着回答以下问题
ALTER TABLE table
ALTER COLUMN phase_mapped TYPE INT USING phase_mapped::integer;
非常感谢您提供的任何帮助您可以在
中使用处理n/a
的部分提供表达式。您可能还需要处理空字符串
ALTER TABLE table
ALTER COLUMN phase_mapped TYPE INT
USING nullif(trim(nullif(phase_mapped,'n/a')),'')::integer;
或者只需删除所有非数字字符:
ALTER TABLE table
ALTER COLUMN phase_mapped TYPE INT
USING nullif(regexp_replace(phase_mapped,'[^0-9]', '', 'g'),'')::integer;
您可以使用处理n/a
的部分在中提供表达式。您可能还需要处理空字符串
ALTER TABLE table
ALTER COLUMN phase_mapped TYPE INT
USING nullif(trim(nullif(phase_mapped,'n/a')),'')::integer;
或者只需删除所有非数字字符:
ALTER TABLE table
ALTER COLUMN phase_mapped TYPE INT
USING nullif(regexp_replace(phase_mapped,'[^0-9]', '', 'g'),'')::integer;