Sql 如何编写DB2 select查询以将字符串包含在“-”分隔符之前

Sql 如何编写DB2 select查询以将字符串包含在“-”分隔符之前,sql,db2,substring,Sql,Db2,Substring,我在我的大学里有一个专栏系。该部门有如下数据 Commerce1-683877 Science2-678900 我需要编写一个select查询,它只返回Commerce1和Science2 我对DB2完全陌生,请帮助我解决这个问题 select substring(department,0,CHARINDEX('-',department) as DEPT from College 编辑-1:谢谢@Charles 我尝试了你的解决方案: 选择子字符串department,1,将“-”,de

我在我的大学里有一个专栏系。该部门有如下数据

Commerce1-683877
Science2-678900
我需要编写一个select查询,它只返回Commerce1和Science2

我对DB2完全陌生,请帮助我解决这个问题

select substring(department,0,CHARINDEX('-',department) as DEPT from College 
编辑-1:谢谢@Charles

我尝试了你的解决方案: 选择子字符串department,1,将“-”,department-1定位为学院的depart

但这给了我一个错误:

SQL错误[42815]:子字符串的参数3的数据类型、长度或值无效。SQLCODE=-171,SQLSTATE=42815,DRIVER=4.9.78

编辑2:你说得对@Charles,我所有的行都不包含“-” 我也尝试使用下面的查询,但得到了相同的错误:

select substring(department,1, LOCATE('-',department || '-') - 1) as DEPT from College

Db2的平台和版本是什么

您是否在寻找合适的DB2SQL参考手册

注意,DB2SQL字符串和数组从1开始,而不是从0开始

选择substringdepartment,1,定位'-',department-1作为学院的department

一种方法使用regexp\u substr:


谢谢@Charles,我正在使用DB2z/OS。请看一下我的“编辑一次”命令,并不是所有的行都有“-”是。我尝试使用| |运算符,但它不起作用,给出了同样的错误。它对我起作用,我对相同的查询使用substr。谢谢你,查尔斯
regexp_substr(department, '^[^-]+')