我的数据库中有以下条目:
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
RETURNS
E01234
E01234
E01234
E01234
E01234
E01234
E01234
E01234444
答案 0 :(得分:4)
如果您需要第二个-
:
SELECT
LEFT(STRING, CHARINDEX('-', @test, CHARINDEX('-', @test) + 1) -1) STRIPPED_STRING
FROM @TABLE
说明:CHARINDEX
将为您提供-
的索引 - 执行两次(+ 1)指定outter CHARINDEX
应该在第一个{{1}之后的地点开始在字符串中。
如果您希望在最后-
之后切断所有内容(无论是否为秒):
-
这一次,你得到最后一个SELECT
LEFT(STRING, LEN(STRING) - CHARINDEX('-', REVERSE(STRING))) STRIPPED_STRING
FROM @table
(反向字符串)CHARINDEX
,并从整个字符串的长度中减去它。
答案 1 :(得分:3)
试试这个:
DECLARE @STR NVARCHAR(MAX) = 'E01234444-1-800000000';
SELECT LEFT(@STR, CHARINDEX('-', @STR, CHARINDEX('-', @STR)) - 1)
答案 2 :(得分:1)
如果您使用MySQL,请使用以下内容:
SELECT SUBSTRING_INDEX(fieldname, '-', 2) FROM tablename