2015-02-10 93 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