如何在T-SQL中将CamelCase转换为带有空格的字符串

4

如何在T-SQL中根据适当的大小写将字符串从'ThisIsTest'转换为'This Is Test'?

  • 输入:'ColumnA'
  • 输出:'Column A'

1
我会使用CLR函数,然后使用C#字符串工具来处理它... 字符串不是SQL Server的强项。 - Dale K
1
我在思考如何在SQL中实现这个功能,虽然脑海中首先想到的是循环和递归查询,可以迭代给定字符串的每个字符,但最好的方法可能只是使用26个具有区分大小写的REPLACE()函数...不过我不确定。如果是这种情况,那似乎相当令人沮丧。 - ZLK
你可以尝试使用迭代CTE,将ASCII码为大写的字符替换为一个空格加上该字符。 - Dale K
1
@DaleBurrell 是的,在CTE中可能是这样做的方式(或者在循环中使用函数),但是由于必须逐个检查每个字符,我认为这实际上可能比在单个字符串上执行26个替换函数要慢。也许吧。我对测试这个问题没有太大兴趣。如果字符串列表非常大,我不会在SQL中执行此操作。 - ZLK
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
2
试试这个。
DECLARE @Input VARCHAR(MAX)='ColumnA'

DECLARE @Regex AS VArCHAR(MAX), @Output AS VARCHAR(MAX)    

SET @Output = @Input
SET @Regex = '%[^ ][A-Z]%'

WHILE PATINDEX(@Regex collate Latin1_General_Bin, @Output) > 0
BEGIN
    SET @Output = Stuff(@Output, PatIndex(@Regex collate Latin1_General_Bin, @Output) + 1, 0, ' ')
END

SELECT @Output AS [Output]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,