如何编写 DB2 选择查询以在“-”分隔符之前包含字符串
Posted
技术标签:
【中文标题】如何编写 DB2 选择查询以在“-”分隔符之前包含字符串【英文标题】:How to write a DB2 select query to include the string before the '-' delimiter 【发布时间】:2021-05-04 14:22:47 【问题描述】:我的“学院”表中有一个“部门”列。部门有类似的数据
Commerce1-683877
Science2-678900
我需要编写一个仅返回 Commerce1 和 Science2 的选择查询。
我是 DB2 的新手,请帮我解决这个问题。
select substring(department,0,CHARINDEX('-',department) as DEPT from College
编辑-1:谢谢@Charles
我尝试了您的解决方案:select substring(department , 1, LOCATE('-',department) - 1) AS DEPT from College
但它给我一个错误:
SQL Error [42815]: THE DATA TYPE, LENGTH, OR VALUE OF ARGUMENT 3 OF SUBSTRING IS INVALID. SQLCODE=-171, SQLSTATE=42815, DRIVER=4.9.78
编辑2:你是对的@Charles,我所有的行都不包含'-' 我也尝试使用以下查询,但得到相同的错误:
select substring(department,1, LOCATE('-',department || '-') - 1) as DEPT from College
【问题讨论】:
【参考方案1】:什么平台和版本的 Db2?
您是否在寻找合适的 Db2 SQL 参考手册?
注意 Db2 SQL 字符串和数组从 1 开始,而不是 0。
select substring(department,1, LOCATE('-',department) - 1) as DEPT from College
【讨论】:
感谢@Charles,我正在使用 DB2 z/OS。请看看我的编辑一次 听起来并非所有行都有'-' 是的。我试过 ||运算符,但它不起作用,给出同样的错误 它对我有用,我使用 substr 和相同的查询。谢谢@Charles【参考方案2】:一种方法使用regexp_substr()
:
regexp_substr(department, '^[^-]+')
【讨论】:
以上是关于如何编写 DB2 选择查询以在“-”分隔符之前包含字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ibm_cloud 上的 db2 中编写 sql 查询