Я советую вам попробовать код, который я опубликовал в блоге некоторое время назад. Я подозреваю, что он будет соответствовать вашим требованиям очень хорошо, а также будет работать лучше, чем многие другие методы.
Правильный регистр SQL Server Функция
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
Эта функция немного быстрее, чем большинство, потому что она повторяется только один раз для каждого слова, которое требует заглавной буквы.