2015-02-10 92 views
0

我試圖創建一個查詢,返回以字母A-Z作爲其第一個字符並隨後僅有數字後面的表中返回值的查詢。SQL-Server:查詢返回的代碼僅以字母開頭的數字

例子:

[table].Code

0056 
A0089 
X0023 
J0F5 
09AG 
A91234671 
A945353B 

查詢將返回以下結果:

A0089 
X0023 
A91234671 

任何幫助將不勝感激,謝謝。

回答

3

您可以使用[A-Z]檢查的第一個字符和ISNUMERIC檢查所有字符,除了從第一個,作爲一個數量:

SELECT Code 
FROM mytable 
WHERE LEFT(Code,1) LIKE '[A-Z]' AND ISNUMERIC(RIGHT(Code, LEN(Code)-1)) = 1 

SQL Fiddle Demo here

編輯:

正如@Dan ISNUMERIC發表評論所述,如果Code字段包含+,-等字符,可能無法給您想要的結果。這ISNUMERIC工作,並有一些字符有點滑稽

SELECT Code 
FROM mytable 
WHERE LEFT(Code,1) LIKE '[A-Z]' AND 
     RIGHT(Code, LEN(Code)-1) NOT LIKE '%[^0-9]%' 

SQL Fiddle Demo here

+0

注:可以代替試試這個。例如,'ISNUMERIC('$')','ISNUMERIC('。')'和'ISNUMERIC(' - ')'可能會返回與您所期望的不同的結果。 – Dan 2015-02-10 10:51:37

+0

@丹你可以看看我所做的編輯。 – 2015-02-10 11:08:35

+0

太好了,謝謝。 – Revokez 2015-02-10 11:13:48

0

您可以使用like進行模式匹配。對於代碼的第一個字符,[A-Z]將匹配AZ之間的任何值。如果你想匹配的小盤股還那麼你可以包括[a-z]查詢

SELECT 
    Code 
    FROM 
    tablename 
    WHERE 
     LEFT(Code,1) LIKE '[A-Z]%' 

Here is more info on LIKE