我寫在C#
的應用程序,我需要在基於具有被其他應用程序設置Id的化合物(PREFIX#####)
一個varchar
領域的數據庫,篩選記錄。數字LIKE條件 - 零點或以上前導零
示例表:
RecordId | ObjectId | ...
1 | RFQ00001 | ...
2 | CO00002 | ...
3 | RFQ0101 | ...
4 | R101 | ...
5 | RFQ01 | ...
6 | RFQ101 | ...
我有ObjectId
前綴列表在我的應用程序(RFQ,CO,R,etc...)
但你可以看到他們並不都是相同的長度。數字後綴並不總是具有相同數量的前導零。
我在我的LIKE
模式由前綴... WHERE ObjectId LIKE 'RFQ[0-9]%'
過濾信心,但我無法找出一個模式來查找特定對象。
例如,如果我找一個RFQ
ID爲1
,我嘗試從示例表篩選記錄上面這樣... WHERE ObjectId LIKE 'RFQ[0-9]%1'
,它將返回記錄1
作爲5
如預期,但它也將包括記錄3
和6
因爲它們以'1'
結尾(即使它們的ID爲101)。
有什麼辦法有某種模式來表示在SQL 0以上的0 LIKE
模式,所以我可以做沿着... WHERE ObjectId LIKE 'RFQ[%0]1'
線(含義與RFQ
開始的東西,並與1
由全0或無隔離端)?還是有人有更好的主意來處理這個問題?
我無法控制數據如何輸入到表中,也無法更改模式。
對不起,我只是在示例表中添加了另一條記錄以顯示並不總是前導零。這將錯誤地包含記錄6,因爲沒有前導零。 – Greg
@Greg [不,不](http://sqlfiddle.com/#!3/7c036/1)。 '1'與'[^ 0]'匹配,所以'NOT LIKE'是錯誤的。 –
啊,我站好了...... – Greg