thi*_*rty 5 sql t-sql sql-server
我的数据库中有以下条目:
E01234-1-1
E01234444-1-800000000
Run Code Online (Sandbox Code Playgroud)
我想修剪条目,所以我得到:
E01234-1
E01234444-1
Run Code Online (Sandbox Code Playgroud)
所以基本上,无论长度如何,我都希望在第二个“-”之前的所有内容
我该如何解决?我使用的是 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
Run Code Online (Sandbox Code Playgroud)
退货
E01234
E01234
E01234
E01234
E01234
E01234
E01234
E01234444
尝试这个:
DECLARE @STR NVARCHAR(MAX) = 'E01234444-1-800000000';
SELECT LEFT(@STR, CHARINDEX('-', @STR, CHARINDEX('-', @STR)) - 1)
Run Code Online (Sandbox Code Playgroud)
如果您需要第二个-
:
SELECT
LEFT(STRING, CHARINDEX('-', @test, CHARINDEX('-', @test) + 1) -1) STRIPPED_STRING
FROM @TABLE
Run Code Online (Sandbox Code Playgroud)
解释:CHARINDEX
将获得-
- 执行两次(+ 1)的索引,指定外部CHARINDEX
应从-
字符串中第一个之后的位置开始。
如果你想在最后一个之后砍掉所有东西-
(不管它是不是第二个):
SELECT
LEFT(STRING, LEN(STRING) - CHARINDEX('-', REVERSE(STRING))) STRIPPED_STRING
FROM @table
Run Code Online (Sandbox Code Playgroud)
这一次,你得到CHARINDEX
最后一个(反转字符串)的-
,然后从整个字符串的长度中减去它。
归档时间: |
|
查看次数: |
42195 次 |
最近记录: |