如何替换除 -(破折号)以外的特殊字符

How to replace special characters except - (dash)

使用 PGAdmin (Postgresql),我试图删除字段中除 - 之外的所有特殊字符。

当前正在使用的命令:

regexp_replace(b.DOWNCASE_NAME, '[^\w\s]', '', 'g') as CONDITION_NAME_DC,

这会将 "ovarian sertoli-leydig cell tumor" 更改为 "ovarian sertolileydig cell tumor"

我使用它是因为有些字段包含逗号、正斜杠,而我不需要这些。但是我如何使用 regexp_replace 删除除 - 之外的那些字符?

请尝试这样使用-

 preg_replace('/[^a-zA-Z0-9-]/', '', $yourString);

您可以使用 ^- 排除模式中的 -,如下所示

select regexp_replace('ova@ri/an serto#li-leydi!g cel/l tumor', '[^\w\s^-]', '', 'g') 

输出

ovarian sertoli-leydig cell tumor

Check demo here