繁体   English   中英

转换字符串,所以在SQL中句子的每个字母都是大写的

[英]Convert string, so each letter of sentence is uppercase in SQL

使用 SQL 我希望更新表中已经存在的数据。

数据列设置为字符串

例子:

“你好。我正在使用 stackoverflow。”

我希望它更改为

“你好。我正在使用 stackoverflow。”

这里的愿望是每个句子的第一个字母都是大写的,所以不是严格的 Sentence Case?

我已经尝试了一些东西,但到目前为止只实现了字符串的第一个字母?

我的猜测是我需要找到 . 并在此之后取一个 2 个字符的子字符串来大写,我不确定这是否适用于 SQL。

尝试使用此功能

ALTER FUNCTION [dbo].[InitialCap](@String VARCHAR(8000))
                  RETURNS VARCHAR(8000)
                 AS
 BEGIN 

                   DECLARE @Position INT;

SELECT @String   = STUFF(LOWER(@String),1,1,UPPER(LEFT(@String,1))) COLLATE Latin1_General_Bin,
                    @Position = PATINDEX('%[^A-Za-z''][a-z]%',@String COLLATE Latin1_General_Bin);

                    WHILE @Position > 0
                    SELECT @String   = STUFF(@String,@Position,2,UPPER(SUBSTRING(@String,@Position,2))) COLLATE Latin1_General_Bin,
                    @Position = PATINDEX('%[^A-Za-z''][a-z]%',@String COLLATE Latin1_General_Bin);

                     RETURN @String;
  END ;

尝试这个

declare @str varchar(max)  = 'i am. i am. this is a string';

declare @ld int = 1, @i int = 1
declare @c varchar(1)
declare @str2 varchar(max) = ''

while @i <= len(@str)
begin

    select  @c = substring (@str, @i, 1)

    if @ld = 1 and @c != ' '
    begin
        select  @ld = 0
        select  @c = upper(@c)
    end

    select  @str2 = @str2 + @c
    if @c = '.'
        select @ld = 1

    select  @i = @i + 1
end

select  @str2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM