Sql 如何从Postgres表中的大量数据中删除常用词

Sql 如何从Postgres表中的大量数据中删除常用词,sql,database,postgresql,Sql,Database,Postgresql,我在博士后有一张桌子。那张表里有1000多个名字。大多数名称都以SHRI或SMT开头。我想从名称中删除此SHRT和SMT,并仅保存原始名称。在没有任何数据库功能的情况下,我如何才能做到这一点?我将逐步向您介绍逻辑: Select left(name,3) from table 此select语句将返回列的前3个字符(“左”三个)。如果我们在前三个字符中寻找SMT,我们可以将其移动到where语句 select * from table where left(name,3) = 'SMT'

我在博士后有一张桌子。那张表里有1000多个名字。大多数名称都以SHRI或SMT开头。我想从名称中删除此SHRT和SMT,并仅保存原始名称。在没有任何数据库功能的情况下,我如何才能做到这一点?

我将逐步向您介绍逻辑:

Select left(name,3) from table
此select语句将返回列的前3个字符(“左”三个)。如果我们在前三个字符中寻找SMT,我们可以将其移动到where语句

 select * from table where left(name,3) = 'SMT'
现在,您可以使用一些选项。我将保留左/右样式,尽管可能会使用replace。我们希望字符位于SMT的右侧,但我们不知道每个字符串有多长才能挑出这些字符。所以我们使用length()来确定

select right(name,length(name)-3) from table where left(name,3) = 'SMT'
我希望我的语法是正确的,我缺少一个postgres环境来测试它。逻辑是“除最后3个字符外,字符串右侧的所有字符(负3不包括左侧的3个字符。如果希望除最后4个字符以外的所有字符都位于左侧,请将其更改为4”)


然后,您可以将其更改为update语句(set name=right(name,length(name)-3))来更新表,或者当您需要没有SMT的名称时,您可以只使用select语句,但将SMT保留在实际数据中。

er.“如果没有任何数据库函数,我怎么做?”-快速澄清…你是说你不想创建函数,还是说你不能使用像substring()这样的数据库函数?不确定您是否可以在不使用函数读取字符串的情况下执行此操作。是的,我不想创建函数。但可以使用内置函数。