SQL:在Dash字符之前获取子字符串。从'ABC-123'到'ABC'

问题描述 投票:0回答:2

我有一个表CARM,其中包含字段(列)ID和AREA_DESC。

在AREA_DESC字段中,我有一些显示如下的值:

AREA_DESC
--------------
Felisberto-001
Ana
Mark-02
Maria
--------------

我想做的是以这种方式显示这些值:

AREA_DESC
--------------
Felisberto
Ana
Mark
Maria
--------------

您可能会注意到,我只想在短划线-之前显示字符串。换句话说,我想在破折号-之后放下破折号-和数字

这是我到目前为止尝试过的查询:

SELECT ID, AREA_DESC ,SUBSTRING(AREA_DESC,0,CHARINDEX('-', AREA_DESC)) as area 
FROM CARM
sql sql-server
2个回答
1
投票

最简单的方法是为'-'添加charindex()

SELECT ID, AREA_DESC,
       LEFT(AREA_DESC, CHARINDEX('-', AREA_DESC + '-')) as area
FROM CARM;

请注意,这也使用LEFT()它在字符串操作中保存一个参数。


0
投票

您可以使用left()而不是在字符串末尾添加'-'

select ID, AREA_DESC, left(AREA_DESC, charindex('-', AREA_DESC + '-'))
from CARM;
© www.soinside.com 2019 - 2024. All rights reserved.