我在数据库中得到以下条目:

E01234-1-1
E01234444-1-800000000

我想修剪条目,以便得到:
E01234-1
E01234444-1

因此,基本上,无论长度如何,我都希望第二个“-”之前的所有内容

我该如何解决?我正在使用MS SQL SERVER 2012

我正在使用它,但它仅带来第一个连字符之前的数据,而不是第二个连字符
DECLARE @TABLE TABLE (STRING VARCHAR(100))

INSERT INTO @TABLE (STRING)
      SELECT 'E01234-1-1'
UNION ALL SELECT 'E01234-1-200'
UNION ALL SELECT 'E01234-1-3000'
UNION ALL SELECT 'E01234-1-40000'
UNION ALL SELECT 'E01234-1-500000'
UNION ALL SELECT 'E01234-1-6000000'
UNION ALL SELECT 'E01234-1-70000000'
UNION ALL SELECT 'E01234444-1-800000000'

SELECT LEFT(STRING, CHARINDEX('-',STRING)-1) STRIPPED_STRING from @TABLE

退货E01234E01234E01234E01234E01234E01234E01234E01234444

最佳答案

如果您需要第二个-:

SELECT
    LEFT(STRING, CHARINDEX('-', @test, CHARINDEX('-', @test) + 1) -1) STRIPPED_STRING
FROM @TABLE

说明:CHARINDEX将为您提供-的索引-进行两次(+1)指定外部CHARINDEX应该从字符串中第一个-之后的位置开始。

如果您想砍掉最后一个-之后的所有内容(无论是否第二个):
SELECT
    LEFT(STRING, LEN(STRING) - CHARINDEX('-', REVERSE(STRING))) STRIPPED_STRING
FROM @table

这次,您获得最后一个(反转字符串)CHARINDEX-,并从整个字符串的长度中减去它。

关于sql - 在SQL中获取某个字符之前的所有内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35506851/

10-09 01:48