Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在postgres中的分隔符后获取一定数量的字符_Sql_Postgresql_Postgresql 9.1 - Fatal编程技术网

Sql 在postgres中的分隔符后获取一定数量的字符

Sql 在postgres中的分隔符后获取一定数量的字符,sql,postgresql,postgresql-9.1,Sql,Postgresql,Postgresql 9.1,我需要从db表中的详细字符串字段中提取一定数量的字符 sub_str将不起作用,因为它要求位置,在这种情况下,每行的位置都不同 分割部分将不起作用,因为它将在分隔符后返回完整部分,我们只需要6个字符 值示例:预期结果: 461/5-6 srj pt no 101 B up ml to dn ml 101 B 461/5-6 srj pt no107A up ml to up loop line 107A 461/5-

我需要从db表中的详细字符串字段中提取一定数量的字符

sub_str将不起作用,因为它要求位置,在这种情况下,每行的位置都不同

分割部分将不起作用,因为它将在分隔符后返回完整部分,我们只需要6个字符

值示例:预期结果:

461/5-6 srj pt no 101 B up ml to dn ml                      101 B   
461/5-6 srj pt no107A up ml to up loop line                 107A
461/5-6 srj pt no 102 A dn ml to dn loop line               102 A
461/6-7 srj pt no 107 B up loop line up ml                  107 B
461/6-7 gf 10 dn loop to dead end                           10
461/7-8 srj of ds gf 13 B machine siding to up loop line    13 B
461/7-8 srj gf 10A machine siding to dn loop line           10A

依此类推。

这为我提供了所示示例的预期输出。但是,事实上,我不知道这是否适用于您的完整数据集,因为您没有足够好地描述模式

我的想法是: 在第一个空格后有一些字母和空格。第一个数字后面是可选空格和字母
A
B
(如果存在):


这里的条件是什么?为什么在第5个字符串中只需要
10
?请详细说明解析逻辑?您确实需要更详细地解释您的模式。我们应该告诉数据库调用什么?例如,为什么结果应该是
10
,而不是
10 dn
?目前最合适的模式可能是:第一个空格后的第一个数字字母。但我无法评估这封信是如何处理的。如果是下一个非空白字符,只给出A或B?不相关,但是:Postgres 9.1是您应该尽快计划升级。
SELECT
    (regexp_matches(mytext, '^.* [a-z ]+(\d+ ?[AB]?)'))[1]
FROM
    texts