0

我在 Postgres 中有一张桌子。在那张表中有超过 1000 个名字。大多数名称以 SHRI 或 SMT 开头。我想从名称中删除此 SHRT 和 SMT 并仅保存原始名称。如果没有任何数据库功能,我怎么能做到这一点?

4

1 回答 1

1

我将引导您完成逻辑:

Select left(name,3) from table

此 select 语句将带回一列的前 3 个字符(“左”三个字符)。如果我们在前三个字符中查找 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中的实际数据。

于 2013-09-05T15:56:25.153 回答