我有一個字符串,如'(ST1)今天是星期二,(ST2) - CCC,yao(ST3)'。我想檢索所有以ST開頭的單詞然後插入到臨時表中。在這種情況下,臨時表將有3行,包括ST1,ST2和ST3。有沒有什麼好的方法來實現這個目標?謝謝。我正在使用SQL Server 2008,T-SQL是我的語言。在T-SQL中檢索字符串中的幾個字
回答
假設每個「單詞」就是你在括號之間所擁有的,你可以很容易地使用字符串分隔符。我正在使用來自sql server central.com的Jeff Moden的分離器。你可以在這裏找到一篇文章,討論和代碼。 http://www.sqlservercentral.com/articles/Tally+Table/72993/
有很多其他偉大的分離器在那裏。 Aaron Bertrand在這裏有優秀的文章和收藏。 http://sqlperformance.com/2012/07/t-sql-queries/split-strings
declare @SomeString varchar(100) = '(ST1) today is Tuesday,(ST2)--CCC,yao (ST3)'
select s.Item
from dbo.DelimitedSplit8K(replace(@SomeString, ')', '('), '(') s
where Item like 'ST%'
它是有用的,並感謝您的幫助 –
你也可以抓住的NGrams8K副本,並做到這一點:
DECLARE @yourstring varchar(100) = '(ST1) today is Tuesday,(ST2)--CCC,yao (ST3)';
SELECT item = SUBSTRING(token, 2, 3)
FROM dbo.NGrams8k(@yourstring, 5)
WHERE token LIKE '(%)';
編輯:如何再處理的值比3:
DECLARE @yourstring varchar(100) = '(ST1) today is Tuesday,(ST2)--CCC,yao (ST11)!! (ST999)';
WITH gramSizes(s,ng) AS (SELECT 3, 5 UNION ALL SELECT 4, 6 UNION ALL SELECT 5, 7)
SELECT item = SUBSTRING(token, 2, s)
FROM gramSizes
CROSS APPLY dbo.NGrams8k(@yourstring, ng)
WHERE token LIKE '(%)'AND token NOT LIKE '%) '
結果:
item
-----
ST1
ST2
ST11
ST999
這是非常聰明的艾倫。不知道我是如何錯過這篇文章的,但我肯定會添加到我的工具箱中!這裏唯一的缺點是如果「單詞」長於3個字符,這將不會返回它們。但是,如果所有單詞都恰好是3個字符,則這種方法有效並且具有更簡單的執行計劃。 –
感謝您的幫助。艾倫 –
不客氣艾弗森。肖恩 - 感謝客氣的話。我的意思是包含一個長於3的值的示例。我現在剛剛更新了我的答案。 –
- 1. 在C#中搜索字符串中每個單詞的前幾個字符
- 2. 從字符串中檢索字符
- 3. 從字符串變量(TSQL)中查找字符索引
- 4. TSQL UDF來分割字符串中的每個8個字符
- 5. 幾個字符串
- 6. 在python中搜索單個字符串中的字符串
- 7. 在PHP中合併幾個字符串
- 8. 如何匹配TSQL中字符串的最後一個字符?
- 9. 從字符串中提取幾個子字符串的方法?
- 10. 在TSQL中交換字符串
- 11. TSQL在字符串分配中使用'
- 12. 在PHP中從字符串的開頭刪除幾個字符?
- 13. 在BroadcastReceiver類中檢索字符串SharedPreference
- 14. 如何從字符串的NSArray中檢索字符串
- 15. 正則表達式檢索字符串中的字符串
- 16. 如何從字符串中檢索重複的子字符串?
- 17. 搜索字符串中的字符串
- 18. 在ruby中用索引一次替換幾個子字符串
- 19. 在幾個電子表格中搜索字符串(不含宏)
- 20. 從參數/字符串中檢索第一個字符
- 21. 如何在一個字符串中搜索兩個字符串?
- 22. 在if語句中檢查幾個字符串爲null
- 23. 在python中搜索字符串的多個字符串
- 24. 檢查C++中的另一個字符串中的字符串
- 25. TSQL:行中的所有字段的值成一個字符串
- 26. 刪除TSQL中字符串的前綴
- 27. tsql中的字符串填充
- 28. 在android中檢索整個字符串中的特定單詞?
- 29. 如何在多個字符串與TSQL匹配時檢索多個值?
- 30. 檢測字符串中base64的索引
定義你的意思。你怎麼知道一個「單詞」的開始和結束。 –
期望值位於開始和結束括號之間嗎? –
@SeanLange對不起,我沒有明確提及它。開始和結束括號之間應該有一個詞。 –