0

必要な文字列のみで大文字のテキストに変換する必要がある文字列があります

私は Charindex を使用してこれを行うためのクエリを作成しました.2番目の単語を見つける方法は1つだけです.インデックスを介して2番目の単語を見つけるだけです.他の単語を見つける方法も

select UPPER(LEFT(SUBSTRING('AHRQ utilization flag',CHARINDEX(' ','AHRQ utilization flag',0)+1,
len('AHRQ utilization flag')),1)) 

たとえば、入力例:

    have a great day 

私の希望の出力:

    Have A Great Day

これを行う方法.......私に提案してください

4

4 に答える 4

0

One method could be:

Split the string into the first char UPPER and the rest like so:

UPPER(LEFT(string)) + RIGHT(string, LEN(string) - 1)

Then replace any space followed by a letter with the upper case of it such as:

REPLACE(string, ' a', ' A')

Combining the above, you can do this:

SELECT 
    UPPER(LEFT('have a great day')) + 
    REPLACE((((((((((((((((((((((((((
        RIGHT('have a great day', LEN('have a great day') - 1)
    , ' a', ' A'), ' b', ' B'), ' c', ' C')
    , ' d', ' D'), ' e', ' E'), ' f', ' F')
    , ' g', ' G'), ' h', ' H'), ' i', ' I')
    , ' j', ' J'), ' k', ' K'), ' l', ' L')
    , ' m', ' M'), ' n', ' N'), ' o', ' O')
    , ' p', ' P'), ' q', ' Q'), ' r', ' R')
    , ' s', ' S'), ' t', ' T'), ' u', ' U')
    , ' v', ' V'), ' w', ' W'), ' x', ' X')
    , ' y', ' Y'), ' z', ' Z')

Might need some tweaking since I haven't actually tested it

于 2013-10-24T06:53:46.487 に答える
0
CREATE FUNCTION udf_vijay (@InputString VARCHAR(1000) )
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @Index INT
DECLARE @Char CHAR(1)
DECLARE @OutputString VARCHAR(255)
SET @OutputString = LOWER(@InputString)
SET @Index = 2
SET @OutputString =
STUFF(@OutputString, 1, 1,UPPER(SUBSTRING(@InputString,1,1)))
WHILE @Index <= LEN(@InputString)
BEGIN
SET @Char = SUBSTRING(@InputString, @Index, 1)
IF @Char IN (' ', ';', ':', '!')
IF @Index + 1 <= LEN(@InputString)
BEGIN
IF @Char != ''''
OR
UPPER(SUBSTRING(@InputString, @Index + 1, 1)) != 'S'
SET @OutputString =
STUFF(@OutputString, @Index + 1, 1,UPPER(SUBSTRING(@InputString, @Index + 1, 1)))
END
SET @Index = @Index + 1
END
RETURN ISNULL(@OutputString,'')
END
于 2013-10-24T06:44:15.153 に答える