是否有可能使用像在SQL查詢來尋找數字和字母組成的圖案。我需要找到特定字段數據具有模式的所有記錄(2個數字,1個連字符,3個字母)## - AAA我使用SQL Server 2008的SSMS。任何幫助將不勝感激。謝謝。創建SQL「LIKE」 Statment,看起來數字和字母
回答
我覺得LIKE '%[0-9][0-9]-[A-Z][A-Z][A-Z]%'
應該工作。
我不知道的情況下,你的靈敏度要求,但你可以在下面貼COLLATE。
select * from
(
SELECT 'GHSASKJK' AS T UNION ALL
SELECT 'HGGH11-ABC' UNION ALL
SELECT 'HGGH11-abc'
) f
WHERE T LIKE '%[0-9][0-9]-[A-Z][A-Z][A-Z]%' COLLATE Latin1_General_CS_AS
完美。這種情況沒有區分大小寫的情況,但我很欣賞將來使用的信息。謝謝。 – user234872 2010-06-16 16:43:53
我會建議創建與.net一個CLR程序集。這樣你可以創建一個可以使用正則表達式的函數或SP。
編輯:儘管這可以通過像做在其他的答案說,我還是會建議建立組裝。如果由於某種原因,你的數據的變化,你需要仰視數據的先進方式,這正則表達式組合將能夠適應變化
使用CLR正則表達式對此非常矯枉過正。另外,如果可能的話,使用'LIKE'通常會快得多,因爲它是SQL Server本地的,並且可以更好地使用索引(如果您可以阻止最初的'%'或'_')。 – Ruben 2010-06-16 15:44:22
有趣。我會研究這個以備將來使用。謝謝 – user234872 2010-06-16 19:02:32
如果數據正好是「## - AAA」,那麼您可以使用LIKE '[0-9][0-9]-[A-Z][A-Z][A-Z]'
。如果數據在某個地方包含此序列,請使用LIKE '%[0-9][0-9]-[A-Z][A-Z][A-Z]%'
。
請注意,如果您的列索引,LIKE '[0-9][0-9]-[A-Z][A-Z][A-Z]'
可以很多比任何UFD或CLR正則表達式更快,因爲SQL Server可以理解LIKE
更好,它可以更容易地跳過指標的部分,如果它永遠不會匹配。例如,所有以0-9以外的字符開頭的記錄都將立即被忽略,而UDF或CLR正則表達式仍將讀取這些值。
您應該可以使用類似的搜索。你的where子句將類似於:
Where YourColumnName Like '%[0-9][0-9]-[a-z][a-z][a-z]%'
***這是假設的情況下,大小寫排序
- 1. mysql其中like和statment不起作用
- 2. SQL Server選擇看起來像'Like'
- 3. 創建Like和查看計數
- 4. 如何忽略SQL LIKE語句的非字母數字字符?
- 5. 創建從字符串,看起來像字典對象
- 6. SQL LIKE只有一個字母
- 7. SQL LIKE - 僅處理單個字母
- 8. 文字看起來模糊
- 9. LIKE和NOT LIKE之間的區別搜索字母數字數據
- 10. 創建的字母數字序列
- 11. 創建函數來替換字符串中的某些字母?
- 12. 創建做出來的單個字母
- 13. 自創建字母
- 14. 創建的字母
- 15. 文字看起來毀容
- 16. Sql LIKE一系列數字
- 17. 用字母和數字2創建一個代碼for-loops
- 18. 創建一個組合字母和數字的PK列
- 19. SQL Oracle排序字符串(數字)和(帶數字的字母)
- 20. 創建字符和數字
- 21. 從字母數字字符串創建唯一整數
- 22. 閱讀數字和字母?
- 23. 計數數字和字母
- 24. 用字母創建圖形
- 25. WPF如何創建字母
- 26. SQL語法來修剪mysql中的字母數字數據phpmyAdmin
- 27. SQL混合數字和字母數字值的排序
- 28. SQL Server中的字母數字和數字排序
- 29. SQL - 訂單用字母數字字符
- 30. pregsplit - 如何將字母數字字符和「_」組合在一起?
我想你會需要的正則表達式。 Oracle有一個'REGEXP_LIKE'函數,就像使用'LIKE'一樣,但是有一個正則表達式。不幸的是,我不認爲MS SQL Server有類似的功能,所以我認爲你可能需要編寫一個程序來幫助。 – FrustratedWithFormsDesigner 2010-06-16 15:35:54