如何摆脱..替换(替换(替换(替换(替换)(...?

Joh*_*yre 2 sql-server sql-server-2005

我正在选择具有滥用状态列的旧数据库上的数据.状态列中包含多条信息.价值观就像'新联系YYYY','在线YYYY','更新YYYY','撤回YYYY'等等.你可能已经猜到了,YYYY代表了我需要的那一年.

在过去,我做过类似的事情

Rtrim( ltrim( Replace(Replace(Replace(Replace(Replace( …
Run Code Online (Sandbox Code Playgroud)

基本上,用空字符串替换所有文本值,所以唯一仍然存在的是年份.我仍然可以这样做,但我认为这很荒谬,而且必须有更好的方法.

有人知道更好的方法吗?

Tim*_*m C 5

如果您只想从字符串中提取四位数年份,则可以使用PATINDEX

SELECT SUBSTRING(FieldName, PATINDEX('%[0-9][0-9][0-9][0-9]%', FieldName), 4)
FROM TableName
Run Code Online (Sandbox Code Playgroud)