gpt4 book ai didi

sql-server-2005 - T-Sql 查询来清理 varchar 列

转载 作者:行者123 更新时间:2023-12-04 23:32:10 25 4
gpt4 key购买 nike

我的其中一个表中有一个 varchar 列,其中包含以下数据:

1234abc
1234abcde456757
1234abc Supervisor
1234abc456 Administrator

我想通过删除紧随其后的任何字母和数字来“清理它”,因此对于上面的示例,我想要:
1234
1234
1234 Supervisor
1234 Administrator

换句话说,我想保留最初的数字和最后一个字。我正在使用 SUBSTRINGCHARINDEX 但这些函数会删除所有内容,直到字符串末尾,我不知道需要删除的部分的长度。

有什么建议?

谢谢

最佳答案

您可以在子查询中搜索第一个非数字和第一个空格。如果位数不是四位,这也有效:

declare @t table (col1 varchar(50))
insert into @t select '12abc'
union all select '1234abcde456757'
union all select '1234abc Supervisor'
union all select '1234abc456 Administrator'
union all select '123456abc456 Administrator'

select case when FirstNonDigit = 0 then col1
when FirstSpace = 0 then substring(col1, 1, FirstNonDigit-1)
else substring(col1, 1, FirstNonDigit-1) +
substring(col1, FirstSpace, len(col1) - FirstSpace + 1)
end
from (
select patindex('%[^0-9]%', col1) FirstNonDigit
, patindex('% %', col1) FirstSpace
, col1
from @t
) subqueryalias

-->
12
1234
1234 Supervisor
1234 Administrator
123456 Administrator

关于sql-server-2005 - T-Sql 查询来清理 varchar 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3525884/

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