2017-09-07 44 views

回答

3

你可以簡單地做:

where left(clientNumber, 1) < 'A' or left(clientNumber, 1) > 'Z' 

或:

where left(clientNumber, 1) not between 'A' and 'Z' 

待辦事項,但是,比較會因爲性格案件棘手。假設1個字節的字符,你可能想:

where ascii(left(clientNumber, 1)) not between ascii('A') and ascii('Z') 

編輯:

如果我想使用一個索引:

where clientNumber < 'A' or clientNumber > 'Z[' 

不過,我不是很確定的指標是真的在這種情況下很有用。

+0

您是不是要找'其中大寫(左(clientNumber,1))之間沒有 'A' 和'Z'',以迎合小寫字母?我也喜歡'between'解決方案,因爲它是可移植的(不是所有的DB都支持正則表達式) – Bohemian

+0

將ClientNumber放在函數中會使查詢不可查詢。 –

3

您可以使用NOT LIKE:

SELECT * 
FROM Table 
WHERE ClientNumber NOT LIKE '[A-Za-z]%' 
+0

這實際上是檢查前兩個字符,而不僅僅是第一個字符。 –

+0

謝謝指出 - 更新爲[A-Za-z] – meisen99

0

嘗試像這樣...

SELECT 
    * 
FROM 
    dbo.MyTable mt 
WHERE 
    mt.ClientNumber LIKE '[^a-Z]%' 
相關問題