如何實現以下顯示ClientNumber的第一個字符不是字母表中的所有行?varchar是字符串的第一個字符嗎?
select * from Table
where Left(ClientNumber,1) <> A to Z
如何實現以下顯示ClientNumber的第一個字符不是字母表中的所有行?varchar是字符串的第一個字符嗎?
select * from Table
where Left(ClientNumber,1) <> A to Z
你可以簡單地做:
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['
不過,我不是很確定的指標是真的在這種情況下很有用。
您可以使用NOT LIKE:
SELECT *
FROM Table
WHERE ClientNumber NOT LIKE '[A-Za-z]%'
這實際上是檢查前兩個字符,而不僅僅是第一個字符。 –
謝謝指出 - 更新爲[A-Za-z] – meisen99
嘗試像這樣...
SELECT
*
FROM
dbo.MyTable mt
WHERE
mt.ClientNumber LIKE '[^a-Z]%'
您是不是要找'其中大寫(左(clientNumber,1))之間沒有 'A' 和'Z'',以迎合小寫字母?我也喜歡'between'解決方案,因爲它是可移植的(不是所有的DB都支持正則表達式) – Bohemian
將ClientNumber放在函數中會使查詢不可查詢。 –