我想返回字符串的一部分 BEFORE 一个分隔符(在本例中是一个连字符)。我发现DB2抛出了一个错误,因为列的值不一致,一些记录有连字符,而另一些没有。所以,如果连字符存在,我想返回连字符之前的字符串,否则就直接返回字符串。
下面显示了COLUMN 1的示例:
| 识别码|第1列|
| - -|- -|
| 一个|ASHJE-JFE公司|
| 2个|QER-SK系统|
| 三个|克赛蒂克|
| 四个|SDJ-EJLF|
我编写了下面的查询来返回字符串previous/before '-',但是,我得到了下面的错误:
未执行该语句,因为标量函数的数值参数超出范围。
我相信这是因为有些记录中没有连字符...
select distinct column1, locate('-',column1), substr(column1,1, (locate('-',column1) - 1)) from db2.table
where column1 is not null
fetch first 25 rows only
with ur
有没有人知道如何完成类似的事情,但返回的字符串时,一个连字符不存在?谢谢!
2条答案
按热度按时间qcuzuvrc1#
您可以使用以下表达式:
9jyewag02#
您可以使用
CASE
陈述式来搜寻连字符、LIKE
运算子和%
万用字符。请参阅Fiddle
结果:
| 识别码|第1列|第2列|
| - -|- -|- -|
| 一个|ASHJE-JFE公司|阿什杰|
| 2个|QER-SK系统|快速响应|
| 三个|克赛蒂克|克赛蒂克|
| 四个|SDJ-EJLF| SDJ公司|