有没有人可以帮我在SQL Server中修剪下面的示例文本?我希望获得这两个'-'之间的数据(有些行没有'-').

AB DCE
CM-AB DCE  -228
ABC
CM-AB DCE-214
CJ-ABC-228

预期yields 为:

AB DCE
AB DCE
ABC
AB DCE
ABC

我试过:

select substring(mycol, 4, charindex('-', mycol, 12) ) 

但结果并不准确.

推荐答案

这个问题似乎已经在这里得到了回答

https://www.webcodeexpert.com/2016/08/sql-server-query-to-get-string-between.html

SELECT SUBSTRING(txt,CHARINDEX('-',txt)+1,
(((LEN(txt))-CHARINDEX('-',REVERSE(txt)))-CHARINDEX('-',txt)))
AS Result FROM tab

Sql相关问答推荐

获取家谱树中第一次出现的特定信息,然后停止

为什么postgres中CURRENT_TIMESTAMP的日期与CURRENT_DATE不同?

返回包含列和包含其他列的列表的自定义查询

一个SQL查询将在需要的地方多次返回同一成员

仅在特定字符串之后提取两个圆括号之间的计量单位文本

PostgreSQL中的合并命令是原子的,还是需要一些类似于SQL Server版本的内容?

编写一个SQL查询来返回收视率较高的类型,并取这些收视率的平均值,我该如何做呢?

直接加法(1+1)与聚合函数SUM(1+1)的区别是什么

合并分层表SQL中的第一个非空、变化的空位置

表函数的作用域和功能

Select 最频繁的值以及分组依据

向表中添加新列取决于表的日期列(unpivot)

在同一列上迭代时计算持续时间

统计重复记录的总数

如何在 SQL Server 中解决这个复杂的窗口查询?

使用多个数据库调用重载 CQRS 模式

一次 Select 语句中按组累计的SQL累计数

使用ALTER TABLE无法删除列

基于 Snowflake 的最大值创建新列

如何更改 duckdb R 中的数据约束