- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 postgresql 中,我需要从给定列的字段中提取 3 个特定的字母数字字符,然后从中创建年份。所以如果该字段的值为FUT,GRA,S12,1055559
或S11,1050830,PON
,我需要S11
或 S12
然后创建2011
或2012
。结果可以保留为文本字段。
我已使用以下方法获取 S??
:substring(my_field from E'(S\\d\\d),')
但创造年份似乎更具挑战性。我希望使用 regexp_split_to_array
但它似乎工作得不是很好。
最佳答案
您看起来快到了——您只需将“20”附加到提取的“12”/“11”:
已更新(PostgreSQL 没有边界\b
(?!)):
SELECT '20'||substring(my_field from E'(?:^|\\W)S(\\d\\d)(?!\\w)') ....
-- NOTE: Old version. However there's no '\b' in this regex flavour.
SELECT '20'||substring(my_field from E'\\bS(\\d\\d)\\b') ....
您必须对反斜杠进行两次转义。此外,在正则表达式中使用方括号意味着所选子字符串将为“12”或“11”,不包括“S”。 '20'||xxxx
只是连接两个字符串。
(?:^|\\W)
确保 Sxx
位于字符串的开头,或者前面有一个非单词字符(如空格或逗号)。这会阻止 FUT,GRAS13,S12
中的 S13
匹配。
(?!\\w)
确保 Sxx
后面没有跟另一个单词字符(即不是更大单词的一部分)。这可以防止 S13
在 S132,GRA,S12
中匹配。
(注意 - 我以前有 \b
意思是“单词边界”,但 PostgreSQL 正则表达式不支持它,所以 (?:^|\W)
和 (?!\w)
是模拟它的方法。
关于regex - Postgres 正则表达式 regexp_split_to_array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8999230/
在 postgresql 中,我需要从给定列的字段中提取 3 个特定的字母数字字符,然后从中创建年份。所以如果该字段的值为FUT,GRA,S12,1055559或S11,1050830,PON,我需要
在 postgresql 中,我需要提取给定列值中的前两个词。因此,如果值是“hello world moon and stars”或“hello world moon”甚至只是“hello worl
我在数据库中有一张表。 http://sqlfiddle.com/#!15/48214/1我需要将转储列拆分为 2 - 用户 ID 和事件编号。我已经使用以下代码完成了此操作: select subs
我有那种绳子 Test 1|new york| X, Test 2| chicago|Y, Test 3| harrisburg, pa| Z 我要求的结果是 Column1 Column 2
我是一名优秀的程序员,十分优秀!