pg 怎么获取这个字符串"集团提供清单出账金额"后的数值 例如{"账期":"202212","集团提供清单出账金额":"800.0"}
时间: 2023-07-08 20:46:38 浏览: 48
假设该字段名为 `field_name`,你可以使用 PostgreSQL 中的内置函数 `substring` 和 `position` 来获取字符串中的数值。
具体的查询语句如下:
```sql
SELECT substring(field_name, position('集团提供清单出账金额' IN field_name) + length('集团提供清单出账金额') + 3) AS amount
```
这个查询语句使用了 `position` 函数来查找字符串 `"集团提供清单出账金额"` 在 `field_name` 字段中的位置,然后使用 `substring` 函数来提取该字符串后面的数值。
`substring` 函数的第一个参数是需要截取的字符串,第二个参数是从哪个位置开始截取,第三个参数是截取的长度。在这个例子中,我们使用 `position` 函数找到了字符串 `"集团提供清单出账金额"` 在 `field_name` 中的位置,然后加上 `"集团提供清单出账金额"` 的长度和 3,即可得到数值的起始位置。这里加上 3 是因为数值后面还有一个双引号和一个逗号,我们需要把它们都去掉。
注意,这个查询语句假定数值是以双引号开头的,如果你的数据中数值的格式不同,你需要对查询语句进行修改以适应不同的格式。
相关问题
pg 怎么获取这个字符串"集团提供清单出账金额"后的800.0,例如{"账期":"202212","集团提供清单出账金额":"800.0"}
假设该字段名为 `field_name`,你可以使用 PostgreSQL 中的内置函数 `substring` 和 `position` 来获取字符串中的数值。
具体的查询语句如下:
```sql
SELECT substring(field_name, position('集团提供清单出账金额' IN field_name) + length('集团提供清单出账金额') + 3, position('"' IN substring(field_name, position('集团提供清单出账金额' IN field_name) + length('集团提供清单出账金额') + 3)) - 1) AS amount
```
这个查询语句使用了 `position` 函数来查找字符串 `"集团提供清单出账金额"` 在 `field_name` 字段中的位置,然后使用 `substring` 函数来提取该字符串后面的数值。与前面的查询语句不同的是,这里还使用了一个 `position` 函数来查找数值中第一个双引号的位置,以确定数值的结束位置。
`substring` 函数的第一个参数是需要截取的字符串,第二个参数是从哪个位置开始截取,第三个参数是截取的长度。在这个例子中,我们使用 `position` 函数找到了字符串 `"集团提供清单出账金额"` 在 `field_name` 中的位置,然后加上 `"集团提供清单出账金额"` 的长度和 3,即可得到数值的起始位置。然后,我们使用第二个 `position` 函数找到数值中第一个双引号的位置,并将其减去起始位置再减去 1,即可得到数值的长度。最后,我们将这个长度作为 `substring` 函数的第三个参数,即可提取数值。
注意,这个查询语句假定数值是以双引号开头和结尾的,如果你的数据中数值的格式不同,你需要对查询语句进行修改以适应不同的格式。
pg 怎么获取这个字段里面的金额 例如{"账期":"202212","集团提供清单出账金额":"800.0"}
假设该字段名为 `field_name`,你可以使用 PostgreSQL 中的内置函数 `regexp_matches` 来获取字符串中的金额。
具体的查询语句如下:
```sql
SELECT regexp_matches(field_name, '\d+(\.\d+)?') AS amount
```
这个查询语句使用正则表达式 `\d+(\.\d+)?` 来匹配字符串中的金额,其中 `\d+` 表示匹配一个或多个数字,`\.\d+` 表示匹配小数点后面的一到多个数字,`(\.\d+)?` 表示小数点及其后面的数字是可选的。
`regexp_matches` 函数返回一个数组,数组的第一个元素是匹配到的字符串。在这个例子中,我们只需要第一个元素,即匹配到的金额,所以使用了 `AS amount` 语句将其命名为 `amount`。
注意,这个查询语句只能匹配到一个金额。如果你的字段中包含多个金额,你需要对查询语句进行修改以匹配到所有的金额。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)