要改某字段的内容,要求改为大写的情况:
1、字段首字母
2、空格后的首字母
3、“-”后的首字母
其它都改为小写。

解决方案 »

  1.   

    UPPER
    返回将小写字符数据转换为大写的字符表达式。语法
    UPPER ( character_expression )参数
    character_expression由字符数据组成的表达式。character_expression 可以是常量、变量,也可以是字符或二进制数据的列。返回类型
    varchar注释
    character_expression 必须为可隐性转换为 varchar 的数据类型。否则请使用 CAST 函数显式转换 character_expression。示例
    本示例使用 UPPER 函数和 RTRIM 函数来返回整理过的大写的作者姓名。USE pubs
    GO
    SELECT UPPER(RTRIM(au_lname)) + ', ' + au_fname AS Name
    FROM authors
    ORDER BY au_lname
    GO下面是结果集:Name                                                           
    -------------------------------------------------------------- 
    BENNET, Abraham                                                
    BLOTCHET-HALLS, Reginald                                       
    CARSON, Cheryl                                                 
    DEFRANCE, Michel                                               
    DEL CASTILLO, Innes                                            
    DULL, Ann                                                      
    GREEN, Marjorie                                                
    GREENE, Morningstar                                            
    GRINGLESBY, Burt                                               
    HUNTER, Sheryl                                                 
    KARSEN, Livia                                                  
    LOCKSLEY, Charlene                                             
    MACFEATHER, Stearns                                            
    MCBADDEN, Heather                                              
    O'LEARY, Michael                                               
    PANTELEY, Sylvia                                               
    RINGER, Albert                                                 
    RINGER, Anne                                                   
    SMITH, Meander                                                 
    STRAIGHT, Dean                                                 
    STRINGER, Dirk                                                 
    WHITE, Johnson                                                 
    YOKOMOTO, Akiko                                                (23 row(s) affected)
      

  2.   


    UPPER()函數
    用法 樓上的大烏龜已經講的很清楚了.
      

  3.   


    例如有表
    id    name
    1     aBC EFG
    2     hij-klm
    3     NOPQ我需要的结果:
    id    name
    1     Abc Efg
    2     Hij-Klm
    3     Nopq谢谢
      

  4.   

    要我处理就引出到excel,处理完后再引入,再update,用SQL直接更新,有点麻烦
      

  5.   

    --前提,每条记录只有一个' ' 或'-'或没有.如果有多个,就自己写函数慢慢分析了.create table tb(id int, name varchar(10))
    insert into tb values(1 ,   'aBC EFG') 
    insert into tb values(2 ,   'hij-klm') 
    insert into tb values(3 ,   'NOPQ')
    goselect id , name = upper(left(name , 1)) + lower(substring(name,2,len(name))) from tb where charindex(' ' , name) = 0 and charindex('-' , name) = 0
    union all
    select id , name = upper(left(name , 1)) + lower(substring(name,2,charindex(' ',name) - 1)) + upper(substring(name,charindex(' ',name) + 1,1)) from tb where charindex(' ' , name) > 0 and len(name) = charindex(' ',name) + 1
    union all
    select id , name = upper(left(name , 1)) + lower(substring(name,2,charindex(' ',name) - 1)) + upper(substring(name,charindex(' ',name) + 1,1)) + lower(substring(name,charindex(' ',name) + 2,len(name))) from tb where charindex(' ' , name) > 0 and len(name) > charindex(' ',name) + 1
    union all
    select id , name = upper(left(name , 1)) + lower(substring(name,2,charindex('-',name) - 1)) + upper(substring(name,charindex('-',name) + 1,1)) from tb where charindex('-' , name) > 0 and len(name) = charindex('-',name) + 1
    union all
    select id , name = upper(left(name , 1)) + lower(substring(name,2,charindex('-',name) - 1)) + upper(substring(name,charindex('-',name) + 1,1)) + lower(substring(name,charindex('-',name) + 2,len(name))) from tb where charindex('-' , name) > 0 and len(name) > charindex('-',name) + 1
    order by iddrop table tb /*
    id          name                                             
    ----------- ------------------------------------------------ 
    1           Abc Efg
    2           Hij-Klm
    3           Nopq(所影响的行数为 3 行)*/
      

  6.   

    ---------------------------------
    --  Author: liangCK 小梁
    ---------------------------------
     
    --> 生成测试数据: @T
    DECLARE @T TABLE (id INT,name VARCHAR(50))
    INSERT INTO @T
    SELECT 1,'aBC EFG' UNION ALL
    SELECT 2,'hij-klm' UNION ALL
    SELECT 3,'NOPQ'--SQL查询如下:;WITH Liang AS
    (
       SELECT
            M.id,
            SUBSTRING(M.name,N.number,1) AS s,
            number
       FROM @T AS M
            JOIN master.dbo.spt_values AS N
                ON number BETWEEN 1 AND LEN(M.name)
                   AND N.type='p' 
    )
    UPDATE A SET 
         name=B.string.value('.','VARCHAR(max)')
    FROM @T AS A
       CROSS APPLY (
           SELECT string=(
                      SELECT
                          CASE WHEN number=1 OR
                               (SELECT s
                                FROM Liang 
                                WHERE id=T.id
                                    AND number=T.number-1) IN(' ','-')
                                 THEN UPPER(s)
                              ELSE LOWER(s) END
                     FROM Liang AS T
                     WHERE id=A.id
                     FOR XML PATH(''),TYPE
                  )
       ) AS BSELECT * FROM @t/*
    id          name
    ----------- --------------------------------------------------
    1           Abc Efg
    2           Hij-Klm
    3           Nopq(3 行受影响)
    */
      

  7.   


    ------------------------------------------------------------------------
    -- Author:  happyflystone  
    -- Date  :  2009-03-16 10:35:16
    -- Ver:     Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86) 
    --       Apr 14 2006 01:12:25 
    --       Copyright (c) 1988-2005 Microsoft Corporation
    --       Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
    --      
    -------------------------------------------------------------------------- Test Data: ta
    IF OBJECT_ID('ta') IS NOT NULL 
        DROP TABLE ta
    Go
    CREATE TABLE ta(id INT,name NVARCHAR(7))
    Go
    INSERT INTO ta
    SELECT 1,'aBC' UNION ALL
    SELECT 2,'hij-klm' UNION ALL
    SELECT 3,'NOPQ' 
    GO
    --Start
    create function f_s(@s nvarchar(20))
    returns varchar(20)
    as
    begin
    set @s  = lower(@s)
        declare @I int
        set @I = 1
        while right(left(@s,@i),1) in (' ','-')
            set @I = @I + 1
        return left(@s,@I -1) + char(ascii(substring(@s,@i,1))- 32)+ right(@s,len(@s) -@i)
    end
    go
    SELECT 
    *,dbo.f_s(name) 
    FROM
    TA 
    drop function f_s
    --Result:
    /*
    id          name    
    ----------- ------- --------------------
    1           aBC     Abc
    2           hij-klm Hij-klm
    3           NOPQ    Nopq
    */
    --End 
      

  8.   

    看LZ的架势,那个“某个字段”里应该是一篇文章?? 
    字段类型是 text/ntext  吧 ?