我在数据库中得到以下条目:
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/