我在Postgres有一张桌子。在那张表中有超过1000个名字。大多数名称都是从SHRI或SMT开始的。我想从名称中删除此SHRT和SMT并仅保存原始名称。如何在没有任何数据库功能的情况下做到这一点?
答案 0 :(得分:1)
我将引导您完成逻辑:
Select left(name,3) from table
此select语句将返回列的前3个字符(“left”三个字符)。如果我们在前三个字符中寻找SMT,我们可以将它移到where语句
select * from table where left(name,3) = 'SMT'
现在,您可以从这里获得一些选择。我将保持左/右风格,但可能会使用替换。我们希望将字符放在SMT的右边,但是我们不知道每个字符串需要多长时间来挑选出这些字符。所以我们使用length()来确定它。
select right(name,length(name)-3) from table where left(name,3) = 'SMT'
我希望我的语法正确,我缺乏测试它的postgres环境。逻辑是'字符串右边的所有字符除了最后3个(减号3排除了左边的3个字符。如果你想要除了左边的最后4个以外的所有字符,则将其更改为4)
然后您可以将其更改为更新语句(set name = right(name,length(name)-3))以更新表,或者您可以在需要没有SMT的名称时使用select语句,但请将SMT留在实际数据中。