先感谢您。
我想删除。之后的值,但是长度没有定义,它会不断变化,但是第二个FULL STOP之后不应使用这些值。
1)示例:
输入:-ROL0602.E.DCM.5264403 and COK0105.F.SKE and CLT005.02A.FCM.65721
输出:ROL0602.E and COK0105.F and CLT005.02A
2)示例:
输入:SKE-5700-00211-000
输出:SKE-5700-00211
这是我需要帮助的两栏。
我尝试使用charindex,但是由于长度不断变化,我无法做到。
最佳答案
SHnugo的解决方案非常出色,但是如果字符串中只有一个点(.),它将失败。这是经过调整的版本,可以处理该问题(请注意我的评论)。
DECLARE @tbl TABLE(YourValue VARCHAR(100));
INSERT INTO @tbl VALUES
('ROL0602.E.DCM.5264403'),('COK0105.F.SKE'),('CLT005.02A.FCM.65721'),('CLT099.02ACFVVV721'), ('SKE-5700-00211-000');
SELECT
CASE
--If there are two or more dots(.) then return everything up to the second dot:
WHEN LEN(YourValue) - LEN(REPLACE(YourValue,'.','')) > 1
THEN LEFT(YourValue,CHARINDEX('.',YourValue,CHARINDEX('.',YourValue,1)+1)-1)
ELSE YourValue -- if there are 1 or 0 dots(.) then return the entire value
END
FROM @tbl AS tbl;
关于sql - 我想删除*。*之后的值,但是长度的值不确定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40843477/