Sql-Server

是否有一個運算符或一種簡單的方法可以將表達式與 SQL 中的 LIKE 運算符匹配一次或多次?

  • October 31, 2019

例如,如果我執行以下查詢,WHERE 子句中的表達式將僅匹配數字前的第一個字母,但有沒有辦法首先匹配一個或多個字母(例如,在字母數量可變的情況下在我過濾的欄位中的數字之前)?

SELECT FilteredField
FROM Table
WHERE FilteredField LIKE '[a-zA-Z][0-9]'

範例數據:

  1. ABC9
  2. 防禦2
  3. GH7
  4. Z1
  5. 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]'

基本上,您是在說:

該值必須以字母和數字結尾,但字母前面的任何內容都不能是非字母。

如果這是您所追求的,則無法僅使用內置語法使用單個條件來指定它。

引用自:https://dba.stackexchange.com/questions/252239