首页 > 解决方案 > 用于更新所有以数字开头的列值的 SQL 脚本,并且 - 在 Postgresql 中为空白

问题描述

我需要更新一个 varchar 列的值 这些值以数字开头,后跟 - 然后是一些字母

例如:27-Check This

我需要更新这个值,即我需要删除起始编号和-

预期输出示例:Check This

注意:只有起始数字,-应该删除第一个字母后的所有值,不应更改。即,如果某个数字或-出现在第一个字母之后,则不应将其删除。

例如:27-Check 23-C This

预期输出:Check 23-C This

注意:我是 sql 新手,所以即使这对您来说看起来很简单,请提供帮助

标签: sqlregexpostgresqlsql-update

解决方案


如果您只想要模式以数字开头时第一个连字符之后的所有内容,您可以使用:

update t
    set col = substring(col from '-(.*)')
    where col ~ '^[0-9]+-';

substring()regexp_substr()with a pattern 是在其他数据库中调用的一个很好的实现。它只是返回模式第一次出现在字符串中。匹配完整的模式,但如果有括号,则只返回该部分。


推荐阅读