我们遇到的问题是,Oracle数据库中的列的字符长度比另一个系统中的字段长。
因此,我尝试将case语句与substr一起使用,以便拆分长度超过40个字符的字符串。到目前为止我的case语句做了我希望他们做的事情,它在column_a中保留字符串的前40个字符,然后将字符串的其余部分放在column_b中。
但是,我遇到的问题是,只使用substr,字符串就会在单词中间分开。
所以我想知道是否有人知道我可以使用regex_substr的几个正则表达式 -
这是我到目前为止使用substr:
的案例陈述CASE WHEN Length(column_a) > 10 THEN SubStr(column_a, 0, 40) END AS column_a,
CASE WHEN Length(column_a) > 40 THEN SubStr(addressnum, 41) END AS column_b
我根本不熟悉正则表达式,因此非常感谢任何帮助!
答案 0 :(得分:2)
我用instr / substr解决了:
<ul>
<li ng-repeat="qlist in response | unique:'quesListName'">
{{qlist.quesListName}}
</li>
<ul>
答案 1 :(得分:0)
今天在OTN上发布了一个非常类似的问题。 https://community.oracle.com/message/13928697#13928697
我发布了一个通用解决方案,它也将涵盖此处提出的问题。如果将来有类似的需求,它可能会派上用场。
对于此处发布的问题,(function () {
'use strict';
angular
.module('flavorApplication')
.controller('UsedSearchesController', UsedSearchesController);
UsedSearchesController.$inject = ['$stateParams', '$state', 'DataService', '_'];
function UsedSearchesController($stateParams, $state, DataService, _) {
var vm = this;
vm.currentSearches = $stateParams.search.split("|")
activate(vm);
////////////////
function activate(vm, _) {
vm.removeSearch = function (searchTerm) {
$stateParams.search = _.filter(vm.currentSearches,
function(search){return search !== searchterm}).join("|")
$state.go('home');
}
}
}
})();
表格只有一行,row_lengths
和r_id = 1
。出于演示目的,我在下面显示的r_len = 40
与我在OTN上使用的不同。
<强>设置强>:
input_strings
查询和输出 :(注意:我包含令牌长度以验证第一个令牌不超过40个字符。如果SECOND令牌可以超过40个字符,则OP无法应答;如果它不能,可以向create table input_strings (str_id number, txt varchar2(500));
insert into input_strings values (1,
'One Hundred Sixty-Nine Thousand Eight Hundred Seventy-Four Dollars And Nine Cents');
insert into input_strings values (2, null);
insert into input_strings values (3, 'Mathguy rules');
create table row_lengths (r_id number, r_len number);
insert into row_lengths values (1, 40);
commit;
select * from input_strings;
STR_ID TXT
------- ---------------------------------------------------------------------------------
1 One Hundred Sixty-Nine Thousand Eight Hundred Seventy-Four Dollars And Nine Cents
2
3 Mathguy rules
3 rows selected
select * from row_lengths;
R_ID R_LEN
------- ----------
1 40
1 row selected.
表添加行,每行可能有row_lengths
。)
r_len = 40