2016-05-06 8 views
-1

SQL Serverデータベースの英数字の値を比較し、特定の範囲の値を選択したいと考えています。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' "? 

答えて

0

あなたは整数部分を抽出して使用することができ、そのフィルタのように:

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

おかげで助けをたくさん。そのうまく動作します。 – Shardul

+0

しかし、この列には文字列型の 'UC'と 'TRN'値があり、上記のCASTはINTに変換しようとしている間にエラーをスローします。 varchar値 'RN'をデータ型intに変換するときに変換に失敗しました。 このエラーの処理方法を教えてください。 @jpw – Shardul

+0

また、A6からA7の範囲の値を表示していますが、A8からA16の値も表示されています。 – Shardul

関連する問題