我有下表,其中包含一些记录:
表:Test_One
create table Test_One
(
Cola varchar(50)
);
插入记录:
Insert into Test_One values('1_123456');
Insert into Test_One values('123456898_121');
Insert into Test_One values('12345633_789');
Insert into Test_One values('986_12345622');
Insert into Test_One values('3457_123456221');
Insert into Test_One values('2_123456456');
Insert into Test_One values('1234567878_5674');
Insert into Test_One values('23_1234560976');
Insert into Test_One values('6_12345634234');
...
...
Millions
现在我想更新Cola
列。我想从开头删除字符串部分
从结束。以 _
结尾的起始字符串,如 1_,2_,23_,6_,3457_,986_
想要删除并
以 _
开头的结束字符串(如 _121,_789,_5674
)不需要删除。
结果应该是:
Cola
-----------
123456
123456898
12345633
12345622
123456221
123456456
1234567878
1234560976
12345634234
...
...
最佳答案
使用CHARINDEX
和SUBSTRING
:
SELECT
*,
CASE
WHEN LEN(SUBSTRING(Cola, CHARINDEX('_', Cola) + 1, LEN(Cola) - CHARINDEX('_', Cola))) >=
LEN(SUBSTRING(Cola, 0, CHARINDEX('_', Cola)))
THEN SUBSTRING(Cola, CHARINDEX('_', Cola) + 1, LEN(Cola) - CHARINDEX('_', Cola))
ELSE
SUBSTRING(Cola, 0, CHARINDEX('_', Cola))
END AS UpdatedCola
FROM Test_One
关于SQL Server 2008 R2 : Update table using pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31847077/