sql - 用于更新所有以数字开头的列值的 SQL 脚本,并且 - 在 Postgresql 中为空白
问题描述
我需要更新一个 varchar 列的值 这些值以数字开头,后跟 - 然后是一些字母
例如:27-Check This
我需要更新这个值,即我需要删除起始编号和-
预期输出示例:Check This
注意:只有起始数字,-
应该删除第一个字母后的所有值,不应更改。即,如果某个数字或-
出现在第一个字母之后,则不应将其删除。
例如:27-Check 23-C This
预期输出:Check 23-C This
注意:我是 sql 新手,所以即使这对您来说看起来很简单,请提供帮助
解决方案
如果您只想要模式以数字开头时第一个连字符之后的所有内容,您可以使用:
update t
set col = substring(col from '-(.*)')
where col ~ '^[0-9]+-';
substring()
regexp_substr()
with a pattern 是在其他数据库中调用的一个很好的实现。它只是返回模式第一次出现在字符串中。匹配完整的模式,但如果有括号,则只返回该部分。