从具有分隔符和不同数量的元素的列中获取子字符串

时间:2015-09-23 13:33:32

标签: postgresql pattern-matching substring

Postgres中我的表格中的列格式为varchar,格式为:'str1/str2''str1/str2/str3'其中str代表任何字符串。

我想写一个选择查询,它会返回str2。我上网了,但找不到任何合适的功能。

1 个答案:

答案 0 :(得分:5)

使用split_part()

/

作为Victoria pointed out,索引是从1开始的,

显然,分隔符必须是明确的。它(在您的示例中为#include <iostream> #include <vector> #include <iostream> #include <math.h> using namespace std; double M[4][4]={5, 1.2, 0.3, -0.6, 1.2, 6, -0.4, 0.9, 0.3, -0.4, 8, 1.7, -0.6, 0.9, 1.7, 10}; vector <vector<double> >L; int n=4; double calculateFunc1(int i){ double temp =0; for (int t = 0; t < n; t ++) temp += L[i][t]*L[i][t]; return sqrt(M[i][i] - temp); } double calculateFunc2(int i,int j){ double temp =0; for (int t = 0; t < n; t ++) temp += L[i][t]*L[j][t]; return (M[j][i] - temp) / L[i][i]; } int main() { vector <double>temp; for (int i =0; i < n; i ++){ for(int j =0; j < n; j ++){ temp.push_back(0.0); } L.push_back(temp); temp.clear(); } for(int i =0; i < n; i ++){ L[i][i] = calculateFunc1(i); for(int j= i +1 ; j < n; j++){ L[j][i] = calculateFunc2(i,j); } } for (int i=0;i<n;i++){ for (int j=0;j<n;j++){ cout<< L[i][j]<<" "; } cout << "\n"; } return 0; } )不能不能成为子字符串的一部分。 (除非你提取的内容正确,否则无论如何都会被忽略。)

相关: