我有一个以大写字母开头的字符串值然后以小写字母继续的列:
THIS SENTENCE IS IN UPPERCASE and this in lower case
有没有办法选择包含大写字母的子字符串?
答案 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)
答案 2 :(得分:0)
上述解决方案仅考虑大写的一个句子的单词后跟小写单词。
Jeff Moden等人使用计数表编写了一个字符串拆分器。
我复制了这个功能并将其安装在我的数据库中。
cte_Split_On_Spaces将所有单词分开。不考虑标点符号。
然后,将字符串整理为区分大小写,区分重音的单词。如果大写字母与普通单词匹配,则为大写。
此解决方案在字符串中查找所有大写单词并按顺序列出。
您可以轻松地将其放回字符串中。
此致
John Miner 狡猾的Dba www.craftydba.com
-
- 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)