2012-05-13 70 views

回答

10

在SQL中使用LIKE運算符模式匹配字符類時,不存在類似正則表達式的字符類的通配符重複。換句話說,你不能做這樣的事情[0-9]+[0-9]{1,3}(這些也將捕獲0

所以,你要零墊的數量纔可以進行比較。

它不是直接在模式,但這表達部分依賴於LIKE操作,並將爲正整數工作介於1和999:

RIGHT('00' + myfield, 3) LIKE '[0-9][0-9][0-9]' 
AND RIGHT('00' + myfield, 3) <> '000' 
AND LEN(myfield) <= 3 

編輯:假設進行你談論Microsoft SQL Server,因爲你沒有指定。

+0

DBKS將''LIKE'[0-9] [0-9] [0-9]'工作嗎?它肯定不是標準的SQL LIKE通配符(標準SQL只能理解'%'和'_'通配符,沒有「範圍」) –

+0

雖然並不是所有的,但很多程序在很大程度上都支持正則表達式。在MySQL中,你可以寫'WHERE num REGEXP'^ [1-9] [0-9] {1,2} $' – Hameed

+0

@Hameed:我明白,但你的例子並沒有使用'LIKE'運算符。 –

5
SELECT * FROM table WHERE field BETWEEN 1 AND 999; 

編輯:這將僅PostgreSQL的工作。

如果你正在尋找一個正則表達式模式匹配的字符串,然後是這樣的:

SELECT * FROM table WHERE field ~ '[1-9][0-9]{1,2}'; 

regexp patterns退房文檔。

SQL Server不支持正則表達式原樣
您可以使用以下workaround或此問題:Regular Expressions in SQL Server servers?

+0

我想要Sql模式! – ARZ

+1

@ARZ,即SQL,你必須*更*更具體。 – huon

相關問題