gpt4 book ai didi

sql - sql中大写字母的拆分词

转载 作者:行者123 更新时间:2023-12-02 09:04:55 25 4
gpt4 key购买 nike

有人知道如何从字符串中拆分以大写字母开头的单词吗?

示例:

    DECLARE @var1 varchar(100) = 'OneTwoThreeFour'
DECLARE @var2 varchar(100) = 'OneTwoThreeFourFive'
DECLARE @var3 varchar(100) = 'One'

SELECT @var1 as Col1, <?> as Col2
SELECT @var2 as Col1, <?> as Col2
SELECT @var3 as Col1, <?> as Col2

预期结果:

    Col1                Col2
OneTwoThreeFour One Two three Four
OneTwoThreeFourFive One Two Three Four Five
One One

如果这是不可能的(或者太长),标量函数也可以。

最佳答案

这是我创建的一个类似于“删除非字母字符”的函数。 How to strip all non-alphabetic characters from string in SQL Server?

此函数使用区分大小写的排序规则,主动查找非空格/大写字母组合,然后使用 STUFF 函数插入空格。这是一个标量 UDF,因此有些人会立即说它会比其他解决方案慢。对于这个想法,我说,请测试一下。该函数不使用任何表数据,并且仅根据需要循环多次,因此它可能会给您带来非常好的性能。

Create Function dbo.Split_On_Upper_Case(@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin

Declare @KeepValues as varchar(50)
Set @KeepValues = '%[^ ][A-Z]%'
While PatIndex(@KeepValues collate Latin1_General_Bin, @Temp) > 0
Set @Temp = Stuff(@Temp, PatIndex(@KeepValues collate Latin1_General_Bin, @Temp) + 1, 0, ' ')

Return @Temp
End

这样调用它:

Select dbo.Split_On_Upper_Case('OneTwoThreeFour')
Select dbo.Split_On_Upper_Case('OneTwoThreeFour')
Select dbo.Split_On_Upper_Case('One')
Select dbo.Split_On_Upper_Case('OneTwoThree')
Select dbo.Split_On_Upper_Case('stackOverFlow')
Select dbo.Split_On_Upper_Case('StackOverFlow')

关于sql - sql中大写字母的拆分词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23470794/

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