Sql-Server
是否有一個運算符或一種簡單的方法可以將表達式與 SQL 中的 LIKE 運算符匹配一次或多次?
例如,如果我執行以下查詢,WHERE 子句中的表達式將僅匹配數字前的第一個字母,但有沒有辦法首先匹配一個或多個字母(例如,在字母數量可變的情況下在我過濾的欄位中的數字之前)?
SELECT FilteredField FROM Table WHERE FilteredField LIKE '[a-zA-Z][0-9]'
範例數據:
- ABC9
- 防禦2
- GH7
- Z1
- XYH2
本質上,當使用 LIKE 運算符時,我正在尋找與 RegEx +等效的 SQL Server 2016。
如果您談論的是純粹在 Transact-SQL 中解決這個問題,您可以使用以下過濾器在範例數據中涵蓋所有這些情況:
WHERE FilteredField LIKE '%[a-zA-Z][0-9]'
如果你想另外規定數字前的所有字元必須是拉丁字母,你需要有點創意:
WHERE FilteredField LIKE '%[a-zA-Z][0-9]' AND FilteredField NOT LIKE '%[^a-zA-Z]%[a-zA-Z][0-9]'
基本上,您是在說:
該值必須以字母和數字結尾,但字母前面的任何內容都不能是非字母。
如果這是您所追求的,則無法僅使用內置語法使用單個條件來指定它。