[英]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.