确定字符串第二个大写字母的位置并分拆

转载 2017年06月23日 15:16:33

Zygophyllum macropodum Boriss.
Zygophyllum
Zygophyllum macropodum
Zygophyllum potaninii Maxim.
Zygophyllum oxycarpum Popov
Zygophyllum loczyi Kanitz
Zygophyllum pterocarpum Bunge
Zygophyllum sinkiangense Y. X. Liou
上述字段,我想找到各个字符串中第二个大写字母的位置并分拆成两列,如果仅有一个大写的则不分拆,以上分拆结果为:
Zygophyllum macropodum                                              Boriss.
Zygophyllum
Zygophyllum macropodum
Zygophyllum potaninii                                                      Maxim.
Zygophyllum oxycarpum                                                  Popov
Zygophyllum loczyi                                                            Kanitz
Zygophyllum pterocarpum                                               Bunge
Zygophyllum sinkiangense                                              Y. X. Liou


with cte(name) as(

select 'Zygophyllum macropodum Boriss.' union all
select 'Zygophyllum' union all
select 'Zygophyllum macropodum' union all
select 'Zygophyllum potaninii Maxim.' union all
select 'Zygophyllum oxycarpum Popov' union all
select 'Zygophyllum loczyi Kanitz' union all
select 'Zygophyllum pterocarpum Bunge' union all
select 'Zygophyllum sinkiangense Y. X. Liou'
),

tb as(
        select c.*,number,ROW_NUMBER()over(partition by c.name order by number) as rownum 
        from cte c,master..spt_values s 
        where s.type='P' 
             and s.number between 1 and len(c.name) 
             and substring(c.name,number,1)  COLLATE Chinese_PRC_CS_AS  like '%[ABCDEFGHIJKLMNOPQRSTUVWXYZ]%'
     )

select name,name vl1,null vl2 
from tb t1 
where t1.rownum=1 
      and not exists(select 1 from tb t2 where t1.name=t2.name and t2.rownum>1)
union all
select name,SUBSTRING(name,1,number-1),SUBSTRING(name,number,len(name)-number+1) 
from tb 
where rownum=2

腾讯 2017 暑假实习生编程题(二):小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 你能帮帮小Q吗?

题目链接:腾讯 2017 暑假实习生编程题(二)由《剑指 offer》面试题 4:替换空格,想到的技巧。此处运用了一个小小的技巧:从后往前将大写字符依次插入数组尾部,时间复杂度 O(n) 。impor...

[面试算法]把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。

//把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。 void MoveSupperToEndWithOrginOrder( char* szSrc , int n...
  • claien
  • claien
  • 2013年11月27日 16:50
  • 3153

1、字符串分拆+行转列问题

最近看到一些比较好的SQL帖子,特地转载过来,以后遇到这些问题也好参考参考...

SQL各种字符串分拆处理函数

字符串分解 --各种字符串分拆处理函数.sql  -- --各种字符串分函数 if exists (select * from dbo.sysobjects...

【一个按标志分拆字符串的好方法】strtok函数简介及应用。

刚刚接触strtok函数,感觉十分神奇。 定义: strtok 语法: #include char *strtok( char *str1, const ...

在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串)

最近,在论坛中,出现了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了,所以,我觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。 1...
  • yupeigu
  • yupeigu
  • 2013年10月20日 16:55
  • 1570

在一个字符串中,统计大写字母个数,小写字母个数,其他字符个数的四种算法

题目描述:编写程序,输出字符串中的大写字母、小写小母和其他的个数
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:确定字符串第二个大写字母的位置并分拆
举报原因:
原因补充:

(最多只允许输入30个字)