SQL仅选择Capital中的单词

时间:2013-07-18 11:41:55

标签: sql sql-server

我有一个以大写字母开头的字符串值然后以小写字母继续的列:

THIS SENTENCE IS IN UPPERCASE and this in lower case

有没有办法选择包含大写字母的子字符串?

3 个答案:

答案 0 :(得分:1)

DECLARE @searchtext VARCHAR(100) = 'THIS SENTENCE IS IN UPPERCASE and this in lower case'
DECLARE @i INT = 1, @l INT = LEN(@searchtext)

WHILE (@i <= @l AND 1 = CHARINDEX(UPPER(LEFT(@searchtext,@i)),@searchtext COLLATE Latin1_General_CS_AS))
BEGIN
    SET @i = @i+1
END

SELECT RTRIM(LEFT(@searchtext, @i-1))

无论在哪里放置整理信息,我都无法使用PATINDEX btw。

答案 1 :(得分:0)

试试这个

DECLARE @string VARCHAR(MAX)
SET @string = 'THIS SENTENCE IS IN UPPERCASE and this in lower case'

SELECT SUBSTRING(@string
                    ,PATINDEX('%[ABCDEFGHIJKLMNOPQRSTUVWXYZ]%',@string COLLATE SQL_Latin1_General_CP1_CS_AS)
                    , PATINDEX('%[abcdefghijklmnopqrstuvwxyz]%',@string COLLATE SQL_Latin1_General_CP1_CS_AS)-1)

Reference link

答案 2 :(得分:0)

上述解决方案仅考虑大写的一个句子的单词后跟小写单词。

Jeff Moden等人使用计数表编写了一个字符串拆分器。

我复制了这个功能并将其安装在我的数据库中。

cte_Split_On_Spaces将所有单词分开。不考虑标点符号。

然后,将字符串整理为区分大小写,区分重音的单词。如果大写字母与普通单词匹配,则为大写。

此解决方案在字符串中查找所有大写单词并按顺序列出。

您可以轻松地将其放回字符串中。

此致

John Miner 狡猾的Dba www.craftydba.com

enter image description here

-

- 在段落上使用拆分器,选择大写单词

- http://www.sqlperformance.com/2012/08/t-sql-queries/splitting-strings-follow-up

同 cte_Split_On_Spaces 如 ( 选择   * 从   [dbo]。[DelimitedSplitN4K]('这句话是大写的,小写','') ) 选择     s.ItemNumber,     s.Item 从     cte_Split_On_Spaces 哪里    s.Item COLLATE SQL_Latin1_General_CP1_CS_AS = UPPER(s.Item COLLATE SQL_Latin1_General_CP1_CS_AS)