我需要创建一个oracle sql逻辑,它计算一个字符串,其中数字用下划线分隔,并需要找出这些数字是否福尔斯一个范围内。
我有一个字符串1_2_5_11_23_48_55_67_98或任何包含下划线分隔的数字的字符串,数字将在1到99之间。
Oracle SQL逻辑需要评估此字符串并查看是否:
- 如果字符串包含number = '1'以及'50'和'99'之间的任何其他数字,并且不包含值'2'和'49'之间的任何数字,则返回'_'被'替换的字符串。|'.
- 如果字符串包含number = '1'以及介于'2'和'49'之间的任何其他数字,并且可选地,如果存在介于'50'和'99'之间的任何其他数字),则通过删除'1'并将'_'替换为'来返回修改后的字符串|'.
- 如果string不包含number = '1',但包含其他数字,则返回字符串,其中'_'替换为'|'.
如果这可以完全使用字符串操作来完成,那也很好。否则,也将需要使用正则表达式的解决方案。
1条答案
按热度按时间tvmytwxo1#
你的逻辑似乎可以简化为:
其可以被实现为:
其中,对于样本数据:
输出:
| 价值|更新值|
| --------------|--------------|
| 1_2_5_11_23_48_55_67_98||25|11|23|48|55|67|98|
| 2_49_1||二四九|
| 99_1_50|九九||一五零|
| 2_3_49||二三|四十九|
| 51_51_98_99_97|51|51|98|99|97|
| 1|1|
| 99_2|九九|二|
fiddle