jac*_*ler 11 sql t-sql sql-server
有谁知道如何从字符串中以大写字母开头分割单词?
例:
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
Run Code Online (Sandbox Code Playgroud)
预期结果:
Col1 Col2
OneTwoThreeFour One Two three Four
OneTwoThreeFourFive One Two Three Four Five
One One
Run Code Online (Sandbox Code Playgroud)
如果这是不可能的(或者如果太长),标量函数也可以.
G M*_*ros 17
这是我创建的一个类似于"删除非字母字符"的函数. 如何从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
Run Code Online (Sandbox Code Playgroud)
像这样称呼它:
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')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8642 次 |
最近记录: |