SQL-Server:查询仅返回以字母开头的数字的代码

时间:2015-02-10 10:38:20

标签: sql sql-server

我正在尝试创建一个查询,该查询返回一个表中的值,该表以字母A-Z作为第一个字符开头,后面只跟着数字。

示例:

[table].Code

0056
A0089
X0023
J0F5
09AG
A91234671
A945353B

查询将返回以下结果:

A0089
X0023
A91234671

非常感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分: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

修改

正如ISNUMERIC字段中包含Code+这样的字符,如@Dan -的评论中所述,可能无法为您提供所需的结果。你可以试试这个:

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

答案 1 :(得分:0)

您可以将like与模式匹配结合使用。对于代码的第一个字符,[A-Z]将匹配A Z之间的任何值。如果您还希望匹配小型大写字母,则可以在查询中包含[a-z]

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

Here is more info on LIKE

答案 2 :(得分:0)

使用模式匹配

select * from table where left(code,1) like '[a-Z][a-Z]%'