How to return string values.

Last post 08-07-2008 8:00 AM by Madhivanan. 5 replies.
Page 1 of 1 (6 items)
Active Topics My Discussions Unanswered Sort Posts: Previous Next
  • 07-29-2008 1:39 AM

    How to return string values.

    Is it possible to return only the upper case of a given string. For a string say, 'My name Is John Cramps' I should get the output as 'MIJC' I am using SQL Server 2005.

     


     

  • 07-29-2008 2:16 AM In reply to

    Re: How to return string values.

    Yes, that is possible when you parse the string and only return those characters within a certain ASCII range. But why? And why in SQL Server and not in a client language?

    --
    Frank Kalis
    Microsoft SQL Server MVP
    Contributing Editor, Writer & Forum Moderator http://www.sql-server-performance.com
    Webmaster: http://www.insidesql.org
    View Frank Kalis's profile on LinkedIn

    XING
  • 07-29-2008 4:47 AM In reply to

    Re: How to return string values.

    Thank you Frank. Can you please help me with the code.

  • 07-29-2008 5:48 AM In reply to

    Re: How to return string values.

    starwarsbigbang:

    Thank you Frank. Can you please help me with the code.

     

    Here's one way:

    DECLARE @s varchar(100)
    SELECT @s = 'My name Is John Cramps'

    SELECT
        x.OnlyInitials
    FROM
        (SELECT
            SUBSTRING(@s, N.Number, 1)
        FROM
            dbo.Number N
        WHERE
            N.Number BETWEEN 0 AND LEN(@s) AND
            ASCII(SUBSTRING(@s, N.Number, 1)) BETWEEN 65 AND 90
            FOR XML PATH('')) AS x(OnlyInitials)

    OnlyInitials
    ------------
    MIJC

    (1 row(s) affected)

    --
    Frank Kalis
    Microsoft SQL Server MVP
    Contributing Editor, Writer & Forum Moderator http://www.sql-server-performance.com
    Webmaster: http://www.insidesql.org
    View Frank Kalis's profile on LinkedIn

    XING
  • 07-29-2008 5:51 AM In reply to

    Re: How to return string values.

    Or a more classic string-based solution:

    DECLARE @S VARCHAR(100)
    SET @S = 'My name Is John Cramps'

    DECLARE @T VARCHAR(100), @X VARCHAR(1), @I INT, @J INT

    SET @I = LEN(@S)
    SET @J = 1
    SET @T = ''

    WHILE @J <= @I
    BEGIN
     SET @X = SUBSTRING(@S, @J, 1)
     IF @X <> ' ' AND ASCII(@X) = ASCII(UPPER(@X))
     BEGIN
      SELECT @T = @T + @X
     END
     SET @J = @J + 1
    END

    SELECT @T

     

  • 08-07-2008 8:00 AM In reply to

    Re: How to return string values.

    This is another appraoch. This will work well even if the string has upper case in the middle of a string

    DECLARE @S VARCHAR(100)

    SET @S = 'My name Is John CraMps'

    DECLARE @T VARCHAR(100), @X VARCHAR(1)

    SET @T = ''

    WHILE CHARINDEX(' ',@S)>0
    BEGIN
        SET @X = SUBSTRING(@S, 1, CHARINDEX(' ',@S)+1)
        SELECT @T = @T + CASE WHEN ASCII(@X) = ASCII(UPPER(@X)) THEN @X ELSE '' END
        SET @S = SUBSTRING(@S, CHARINDEX(' ',@S)+1,len(@S))
    END

    SET @X = SUBSTRING(@S, 1, 1)

    SELECT @T = @T + CASE WHEN ASCII(@X) = ASCII(UPPER(@X)) THEN @X ELSE '' END

    SELECT @T

     

    Madhivanan

    Failing to plan is Planning to fail
Page 1 of 1 (6 items)
Active Topics   My Discussions    Unanswered Posts


© 2000 - 2007 vDerivatives Limited All Rights Reserved.