2012-01-12 15 views
8

私のテーブルには文字列のみを選択する必要がありますが、このテーブルには数字と文字列が一緒にあります。数字のある文字列のみを選択する

例:

ID Name 
1 Jacke11 
2 Andre 
3 Rodrigo11 
4 55555 

私の選択IDのみを返す必要が:1、2、3

おかげでジョーの非常に細かいISNUMERICソリューションに代わる、することができますように

+0

IDは本当に別の列で、名前は別の列ですか? –

+0

selectが1、2、3のみを返す必要がある場合は、テーブルの整数だけが必要です。スペースで区切られていますか? –

答えて

17
SELECT ID 
    FROM YourTable 
    WHERE ISNUMERIC(Name + '.0e0') = 0 
+2

私はなぜそれを知っていると思いますが、なぜあなたはあなたが '+ '.0e0' 'をしているのかについてコメントすることができます。私はそれが非常に直感的であるとは思わないからです。 – Yuck

+1

@Yuck - 'ISNUMERIC'との予期せぬ一致を得ることができるので、floatのような非int型のデータ(TRUE)を評価します。 '12e10'は' ISNUMERIC'を 'TRUE'として渡します。 '.0e0'を加えることによって、整数値だけをチェックするように強制します。 – JNK

+1

@ Yuck:ISNUMERICがなければ、 '+'や '$'などは1を返します。 –

5

を使用してアルファベットの文字を入力してください。

SELECT ID 
    FROM YourTable 
    WHERE PATINDEX('%[a-z]%', name) > 0 

文字列が最初のアルファベットになると文字列の検索が停止するため、少し速くなる場合があります。