Sql server 2008 要比较SQL Server中的字母数字值吗

Sql server 2008 要比较SQL Server中的字母数字值吗,sql-server-2008,Sql Server 2008,我想比较sql server数据库中的字母数字值,并选择特定范围内的值 例如:员工等级在A1到A20之间,我想选择所有高于A5等级的员工 EMP_ID GRADE 1111 A01 2222 A15 3333 A09 4444 A09 5555 UC 6666 A14 7777 A15 8888 TRN 9999 A04 4242 A14 1212 TRN

我想比较sql server数据库中的字母数字值,并选择特定范围内的值

例如:员工等级在A1到A20之间,我想选择所有高于A5等级的员工

EMP_ID GRADE 1111 A01 2222 A15 3333 A09 4444 A09 5555 UC 6666 A14 7777 A15 8888 TRN 9999 A04 4242 A14 1212 TRN 1515 A12 5541 UC 5563 A05 These are sample values. When I run the select query without using predicate "AND LEFT(GRADE,1) = 'A' ", it is only retrieving values up to A6, where as it should retrieve up to A15 which is maximum in current scenario. Where as after using the predicate "AND LEFT(GRADE,1) = 'A' " I am getting correct values i.e. up to A15 in this same scenario. GRADE column can have any number of repeated entries. All of them needs to be retrieved. Can you please tell best possible to do this without using predicate "AND LEFT(GRADE,1) = 'A' "? EMP_ID等级 1111A01 2222A15 3333 A09 4444A09 5555加州大学 6666A14 7777A15 8888 TRN 9999A04 4242A14 1212 TRN 1515 A12 5541加州大学 5563 A05 这些是样本值。当我运行select查询而不使用 谓词“和LEFT(GRADE,1)='A'”,它只检索向上的值 到A6,其中as应检索到A15,这是当前场景中的最大值。 其中,在使用谓词“AND LEFT(GRADE,1)='A'”后,我得到 正确的值,即在同一场景中高达A15。 “等级”列可以有任意数量的重复条目。所有这些都需要检索。 你能告诉我最好不要使用谓词吗 “左(1年级)=‘A’?
您可以提取整数部分并将其用作筛选器:

SELECT * FROM TBL_NAME 
WHERE CAST(SUBSTRING(GRADE,2,LEN(GRADE)-1) AS INT) > 5

但是现在这个列也有一些字符串类型的'UC'和'TRN'值,当上面的转换尝试将其转换为INT时,它会抛出一个错误。将varchar值“RN”转换为数据类型int时,转换失败。您能告诉我如何处理此错误吗@jpwAlso显示A6至A7范围内的值,同时也显示A8至A16范围内的值present@Shardul该问题并未表明可能存在A1-A20范围以外的值。您可以通过在where子句中添加另一个谓词tp确保只选择以A开头的值:
和LEFT(GRADE,1)='A'
@Shardul至于您的断言A8-A16没有显示(至少我认为这是您的意思,我还不清楚),我无法重新创建它-我在测试中得到了预期的值。添加谓词后,查询现在工作正常。但是如果我不使用这个谓词,并且如果我的GRADE列包含值'A1-A20','UC','TRN',那么查询只获取A6以下的记录。请告诉我,如果你能重新创建这个。非常感谢您的帮助。@jpw