我试图创建一个查询,返回以字母A-Z作为其第一个字符并随后仅有数字后面的表中返回值的查询。SQL-Server:查询返回的代码仅以字母开头的数字
例子:
[table].Code
:
0056
A0089
X0023
J0F5
09AG
A91234671
A945353B
查询将返回以下结果:
A0089
X0023
A91234671
任何帮助将不胜感激,谢谢。
我试图创建一个查询,返回以字母A-Z作为其第一个字符并随后仅有数字后面的表中返回值的查询。SQL-Server:查询返回的代码仅以字母开头的数字
例子:
[table].Code
:
0056
A0089
X0023
J0F5
09AG
A91234671
A945353B
查询将返回以下结果:
A0089
X0023
A91234671
任何帮助将不胜感激,谢谢。
您可以使用[A-Z]
检查的第一个字符和ISNUMERIC
检查所有字符,除了从第一个,作为一个数量:
SELECT Code
FROM mytable
WHERE LEFT(Code,1) LIKE '[A-Z]' AND ISNUMERIC(RIGHT(Code, LEN(Code)-1)) = 1
编辑:
正如@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]%'
您可以使用like
进行模式匹配。对于代码的第一个字符,[A-Z]
将匹配A
Z
之间的任何值。如果你想匹配的小盘股还那么你可以包括[a-z]
查询
SELECT
Code
FROM
tablename
WHERE
LEFT(Code,1) LIKE '[A-Z]%'
使用模式匹配
select * from table where left(code,1) like '[a-Z][a-Z]%'
注:可以代替试试这个。例如,'ISNUMERIC('$')','ISNUMERIC('。')'和'ISNUMERIC(' - ')'可能会返回与您所期望的不同的结果。 – Dan 2015-02-10 10:51:37
@丹你可以看看我所做的编辑。 – 2015-02-10 11:08:35
太好了,谢谢。 – Revokez 2015-02-10 11:13:48