Postgres的查询以按索引选择数组中的值

时间:2018-08-17 06:25:19

标签: r postgresql

我的数据是像这样的字符串:

'湯姆 is a boy.' 

or '梅isagirl.' 

or '約翰,is,a,boy.'.

我想分割字符串,只选择中文名称。

在R中,我可以使用命令

tmp=strsplit(string,[A-z% ])

unlist(lapply(tmp,function(x)x[1]))

然后得到我想要的中文名称。

但是在PostgreSQL中

select regexp_split_to_array(string,'[A-z% ]') from db.table

我得到一个数组,例如{'汤姆','','',''},{'梅','','',''},... 而且我不知道如何选择数组中的项目。

我尝试使用命令

select regexp_split_to_array(string,'[A-z% ]')[1] from db.table

我得到一个错误。

1 个答案:

答案 0 :(得分:1)

我不认为regexp_split_to_array是您在此处尝试执行的功能。而是使用regexp_replace来有选择地删除所有ASCII字符:

SELECT string, regexp_replace(string, '[[:ascii:]~:;,"]+', '', 'g') AS name
FROM yourTable;

enter image description here

Demo

请注意,您可能需要调整要删除的字符集,具体取决于您希望string列中包含哪些其他非中文字符。该答案为您提供了有关如何进行此操作的一般建议。