请 帮 我 解决 这个 问题 。 表 :
id _ client , 值
| 标识|价值 观|
| - -| - -|
| 一 个|0.46 英寸|
| 2 个|百分 之 二十五|
| 三 个|无 信息|
| 四 个|二十二|
| 五 个|12.2 节|
| 六 个|百分 之 三百 六十五|
| 七 个|五十四|
我 需要 从 字符 串 中 获取 百分比 值
需要 采石 场 的 下 一 个 结果
| 标识|价值 观|
| - -| - -|
| 一 个|0.46 英寸|
| 2 个|二十五 个|
| 三 个|零 值|
| 四 个|零 值|
| 五 个|12.2 秒|
| 六 个|三百 六十五|
| 七 个|五十四|
尝试 了 一些 正则 表达式 , 我 发现 在 这里 , 但 它 的 工作 错误
2条答案
按热度按时间carvr3hs1#
正则表达式子字符串操作至少应该是一个很好的开始:
上面的查询会使
values
列只剩下numeric strings。要得到一个实际的numeric列,您需要进行某种类型的转换。您的数据似乎同时使用逗号和点作为小数位。您可能需要在我上面的答案的基础上进行一个额外的替换,以使浮点数成为适合您的区域设置的正确格式。prdp8dxp2#
从 字符 串 的 右侧 删除
%
字符 , 并 将 小数 点 规范 化 为 单个 字符 , 然后 将TO_NUMBER
与DEFAULT NULL ON CONVERSION ERROR
一起 使用 ,DEFAULT NULL ON CONVERSION ERROR
可 从 Oracle 12 :中 的 每 一 个
其中 , 对于 示例 数据 :
格式
输出 :
| 价值|数值|
| - -| - -|
| 0.46 英寸|点 四六|
| 百分 之 二十五|二十五 个|
| 无 信息|* 空 值 |
| 二十二| 空 值 *|
| 12.2 |12.2 节|
| 百分 之 三百 六十五|三百 六十五|
| 五十四|五十四|
fiddle 的 最 大 值