使用SQL我希望更新已存在于表中的数据。
数据列设置为字符串
示例:
“你好。我正在使用stackoverflow。”
我希望将其更改为
“你好。我正在使用stackoverflow。”
这里的愿望是每个句子的第一个字母是大写的,所以不是严格的句子案例?
我已经尝试了一些东西,但到目前为止只获得了第一个字符串?
我的猜测是我需要找到一个子字符串字符。并在此之后使用2个字符的子串来大写,我不确定这是否可以用SQL。
答案 0 :(得分:0)
尝试使用此功能
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 ;
答案 1 :(得分:0)
试试这个
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