declare @a varchar(100)
set @a='abcDEeigHUie'
想返回字符串第一个大写字母的位置。请问怎么写?--并不知道第一相是D另处还想问一下如果想修改一个数据库eg:pubs的大小写区分设置,怎么改呢?

解决方案 »

  1.   

    declare @a varchar(100)
    set @a= 'dddDEeigHUie'select patindex('%[ABCDEFGHIJKLMNOPQRSTUVWXYZ]%',@a COLLATE Chinese_PRC_CS_AS)--OKselect patindex('%[A-Z]%',@a COLLATE Chinese_PRC_CS_AS)--error
      

  2.   

    declare @a varchar(100)
    declare @i int
    set @a= 'abcDEeigHUie'set @i=1
    while @i<=len(@a)
    begin
        if ascii(substring(@a,@i,1))>=65 and ascii(substring(@a,@i,1))<=90
            break
        set @i=@i+1
    end
    print @i
      

  3.   

    可在建库的时候指定排序规则。建后改相当麻烦,可能要先改表,再改数据库——ALTER DATABASE
      

  4.   

    declare @a varchar(100) 
    set @a= 'abdDEeigHUie ' 
    select charindex(N'D',@a collate Chinese_PRC_CS_AI_WS )            
    ----------- 
    4(所影响的行数为 1 行)
      

  5.   

    排序规则说明,参照以下:
    http://blog.csdn.net/roy_88/archive/2007/01/07/1476074.aspx
    go
    alter table 数据库 collate Chinese_PRC_CS_AI_WS ---系统数据库是不允许改的,只能重建Master数据库时和重装时指定