我需要将每个单词的第一个字母大写,但保留在提交给SQL Server的文本框中可能已存在的任何大写字母。我目前有一个我调用的SQL函数,但是大写第一个字母并将每个单词的其余部分缩小。 例如,我需要的是,
约翰史密斯 - 约翰史密斯 ABC有限公司 - ABC Limited下面是我目前的SQL函数。
ALTER FUNCTION [dbo].[CAP_FIRST] ( @InputString varchar(4000) )
RETURNS VARCHAR(4000) AS BEGIN
DECLARE @Index INT DECLARE @Char CHAR(1) DECLARE
@PrevChar CHAR(1) DECLARE @OutputString VARCHAR(255)
SET @OutputString = LOWER(@InputString) SET @Index = 1
WHILE @Index <= LEN(@InputString) BEGIN
SET @Char = SUBSTRING(@InputString, @Index, 1)
SET @PrevChar = CASE WHEN @Index = 1 THEN ' '
ELSE SUBSTRING(@InputString, @Index - 1, 1)
END
IF @PrevChar IN (' ', ';', ':', '!', '?', ',', '.', '_', '-', '/', '&', '''', '(')
BEGIN
IF @PrevChar != '''' OR UPPER(@Char) != 'S'
SET @OutputString = STUFF(@OutputString, @Index, 1, UPPER(@Char))
END
SET @Index = @Index + 1 END
RETURN @OutputString
END
答案 0 :(得分:0)
以下行似乎负责小写整个输入字符串:
SET @OutputString = LOWER(@InputString)
然后,该函数选择性地将它认为是每个单词的开头的大写字母。用以下赋值替换上面的行,并保留输入字符串的原始大小写:
SET @OutputString = @InputString