首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DB2中获取字符分隔的子字符串?

问如何在DB2中获取字符分隔的子字符串?
EN

Stack Overflow用户
提问于 2021-05-06 18:19:52
回答 2查看 89关注 0票数 0

我的表"Employee“中有一个列"employee_Id”。

employee_Id有员工姓名和出生日期。例如:

Jason-21996和Buttler

请帮我写一个select查询,返回Jason和Buttler作为输出。

这是我正在尝试的查询:

select substring(employee_Id,1, LOCATE('-',employee_Id) - 1) as Emp_ID from Employee

我看到了这个错误:

代码语言:javascript
复制
SQL Error [42815]: THE DATA TYPE, LENGTH, OR VALUE OF ARGUMENT 3 OF SUBSTRING IS INVALID. SQLCODE=-171, SQLSTATE=42815, DRIVER=4.9.78

编辑1:根据@Mark的建议,我已经按如下方式编辑了查询

select substring(employee_Id,1, LOCATE('-',employee_Id || '-') - 1) as Emp_ID from Employee

我得到了同样的错误。我尝试运行定位,发现它返回Buttler的索引为15,因为列长度是15。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-07 21:10:09

按原样运行以下代码。

代码语言:javascript
复制
select substring(employee_Id, 1, LOCATE('-', employee_Id || '-') - 1) as Emp_ID 
from 
(
          SELECT 'Jason-21996' FROM SYSIBM.SYSDUMMY1
UNION ALL SELECT 'Buttler'     FROM SYSIBM.SYSDUMMY1
) Employee (employee_Id);

它对你有效吗?

票数 1
EN

Stack Overflow用户

发布于 2021-05-06 18:27:55

如果您的DB2版本支持正则表达式,那么一个简单的方法是regexp_substr()

代码语言:javascript
复制
regexp_substr(employee_id, '^[^-]+')

Here是一个db<>fiddle。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67416190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档