我正在选择具有滥用状态列的旧数据库上的数据。状态列中包含多条信息。价值观就像'新联系YYYY','在线YYYY','更新YYYY','撤回YYYY'等等。你可能已经猜到了,YYYY代表了我需要的那一年。
过去我做过类似的事情
Rtrim( ltrim( Replace(Replace(Replace(Replace(Replace( …
基本上,用空字符串替换所有文本值,所以唯一仍然存在的是年份。我仍然可以做到这一点,但我认为这很荒谬,而且必须有更好的方法。
有人知道更好的方法吗?
答案 0 :(得分:5)
如果您只想从字符串中提取四位数年份,可以使用PATINDEX
SELECT SUBSTRING(FieldName, PATINDEX('%[0-9][0-9][0-9][0-9]%', FieldName), 4)
FROM TableName
答案 1 :(得分:1)
如果年份总是最后4:
SELECT right(FieldName,4) from table
答案 2 :(得分:1)
给出的所有答案都可以解决您的问题,但正确的答案是更好地规范您的数据库。如果您需要将年份作为单独的项目,则应将其存储在单独的列中。
其他任何东西都只是从疣中去除毛发,正如我亲爱的老祖母曾经说过的那样(她从来没有真正说过,我只是想到了它,它听起来很酷 - 一定是为什么我没有得到多少: - 。)