gpt4 book ai didi

sql-server - 以 PascalCase 格式转换文本

转载 作者:行者123 更新时间:2023-12-02 16:08:10 24 4
gpt4 key购买 nike

是否可以仅使用正确的 SQL 代码将 SQL Server 中表列中的文本转换为 PascalCase?

TABLE DEFINITION
----------------------
ID int
CITTA varchar(50)
PROV varchar(50)
CAP varchar(50)
COD varchar(50)

包含要转换的文本的字段是CITTA。它包含所有大写值,例如“ABANO TERME”、“ROMA”等。单词之间用空格分隔。

编辑

我忘了提到有些单词中有重音字符'。该字符可以位于单词的末尾或中间。

编辑2:

结果中发现一些怪癖:

  • 如果我有一个像“ISOLA BALBA”这样的名字,这个名字会被翻译成“IsolaBalba”(大小写正确,但缺少空格)
  • 如果我有一个像“ISOLA D'ASTI”这样的名字,它会转换为“IsolaD'asti”(像以前一样缺少空格并且大小写不正确。在这种情况下,正确的结果是“Isola D'Asti”

您能就这个小问题给我一些建议吗?

最佳答案

我鼓励您尝试我不久前在博客中发布的代码。我怀疑它能很好地满足您的要求,并且比许多其他方法表现得更好。

SQL Server Proper Case Function

CREATE FUNCTION dbo.Proper(@DATA VARCHAR(8000))
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @Position INT

SELECT @DATA = STUFF(LOWER(@DATA), 1, 1, UPPER(LEFT(@DATA, 1))),
@Position = PATINDEX('%[^a-zA-Z][a-z]%', @DATA COLLATE Latin1_General_Bin)

WHILE @Position > 0
SELECT @DATA = STUFF(@DATA, @Position, 2, UPPER(SUBSTRING(@DATA, @Position, 2))),
@Position = PATINDEX('%[^a-zA-Z][a-z]%', @DATA COLLATE Latin1_General_Bin)

RETURN @DATA
END

这个函数比大多数函数要快一些,因为它只对每个需要大写字母的单词循环一次。

关于sql-server - 以 PascalCase 格式转换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4383038/

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