SQL:在短划线字符之前获取子字符串。从“ ABC-123”到仅“ ABC”

时间:2019-04-24 13:14:39

标签: sql sql-server

我有一个具有字段(列)ID和AREA_DESC的表CARM。

在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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

您可以使用left()来代替,在字符串末尾添加'-'

select ID, AREA_DESC, left(AREA_DESC, charindex('-', AREA_DESC + '-'))
from CARM;