gpt4 book ai didi

sql - 我想去掉*.*后面的值,但是它的长度值不确定

转载 作者:行者123 更新时间:2023-12-02 08:17:19 27 4
gpt4 key购买 nike

提前谢谢你。

我想删除 之后的值。,但是长度没有定义,它一直在变化,但它不应该采用第二个句号之后的值。

1)例子:
输入:- ROL0602.E.DCM.5264403 和 COK0105.F.SKE 和 CLT005.02A.FCM.65721

输出:ROL0602.E 和 COK0105.F 和 CLT005.02A

2) 示例:输入:SKE-5700-00211-000

输出:SKE-5700-00211

这是我需要一些帮助的两列。

我尝试使用 charindex,但由于长度不断变化,我无法做到这一点。

最佳答案

像这样尝试:

DECLARE @tbl TABLE(YourValue VARCHAR(100));
INSERT INTO @tbl VALUES
('ROL0602.E.DCM.5264403'),('COK0105.F.SKE'),('CLT005.02A.FCM.65721'),('SKE-5700-00211-000');

SELECT CASE WHEN CHARINDEX('.',YourValue)>0 THEN LEFT(YourValue,CHARINDEX('.',YourValue,CHARINDEX('.',YourValue,1)+1)-1)
ELSE YourValue END
FROM @tbl AS tbl

结果

ROL0602.E
COK0105.F
CLT005.02A
SKE-5700-00211-000

请为最后一个示例提供规则。不知道怎么剪...

此命令使用 LEFT 从开头获取字符串。长度是通过搜索一个点来找到的,从第一个点之后的位置 1 开始。

更新:更通用的解决方案

下面的填充首先将字符串分成几部分(也很容易与其他分隔符一起使用)。最后根据您可以定义的规则重新连接:

DECLARE @tbl TABLE(YourValue VARCHAR(100));
INSERT INTO @tbl VALUES
('ROL0602.E.DCM.5264403'),('COK0105.F.SKE'),('CLT005.02A.FCM.65721'),('SKE-5700-00211-000');

WITH Parted AS
(
SELECT YourValue
,CAST('<x>' + REPLACE(REPLACE(tbl.YourValue,'-','.'),'.','</x><x>') + '</x>' AS XML) AS Casted
,CASE WHEN CHARINDEX('.',YourValue)>0 THEN '.' ELSE CASE WHEN CHARINDEX('-',YourValue)>0 THEN '-' ELSE '?' END END AS SeparatorChar
FROM @tbl AS tbl
)
,SingleParts AS
(
SELECT SeparatorChar
,YourValue
,ISNULL(Casted.value('/x[1]','nvarchar(max)'),'') AS Part1
,ISNULL(Casted.value('/x[2]','nvarchar(max)'),'') AS Part2
,ISNULL(Casted.value('/x[3]','nvarchar(max)'),'') AS Part3
,ISNULL(Casted.value('/x[4]','nvarchar(max)'),'') AS Part4
,ISNULL(Casted.value('/x[5]','nvarchar(max)'),'') AS Part5
FROM Parted
)
SELECT CASE SeparatorChar
WHEN '.' THEN Part1 + '.' + Part2
WHEN '-' THEN Part1 + '-' + Part2 + '-' + Part3
ELSE YourValue
END
FROM SingleParts

结果

ROL0602.E
COK0105.F
CLT005.02A
SKE-5700-00211

关于sql - 我想去掉*.*后面的值,但是它的长度值不确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40843477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com