2010-11-25 13 views
1

私は最後に数値を切り捨てるのに必要な@FileNameというSQL変数を持っています。私の文字列は、現時点で見て、私は彼らがする必要がどのようにどのように相続人例:loremSQL変数の末尾の数字を切り捨てます

lorem-ipsum-456

lorem-1lorem-ipsumへ(ノート:「 - 」真ん中遺跡で)

foo-123-bar-1234foo-123-barに(:中間たままで数)

から

123-loremノート:いいえ数ととして変更なし ' - ' 末端の)

これは可能ですか?

ありがとうございました。

答えて

4

PATINDEXとを使用することができます。これを試してみてください:

SELECT LEFT(@FileName,LEN(@FileName)-patindex('%[^0-9]%',REVERSE(@FileName))+1) 
+0

これを歓迎します!しかし、例えば 'test-123'を入力すると 'test-'が返されます。とにかく「テスト」だけを返すことはありますか? – Curt

+0

これを行うには、スキップするすべての文字をPATINDEXに追加する必要があります。たとえば、最後の数字と先行する " - "を取り除くには、PATINDEXの最初のパラメータに " - "を追加する必要があります。この場合、文章は次のようになります。 SELECT LEFT(@ FileName、LEN(@FileName)-patindex( '%[^ 0-9 - ]%、REVERSE(@FileName))+1) – Lamak

+0

Sweet!乾杯、素晴らしい作品! – Curt

0

はい、可能です。 SUBSTRING & ASCII TSQL関数を見てください。

+0

私はSUBSTRING機能を認識しており、過去何度も使用しています。しかし、どのくらいの長さの部分文字列が必要なのか分かりませんか? – Curt

+0

1つの方法は、文字を逆順に1つずつ見るために部分文字列を使用することです。数字に遭遇したら、スキップしてください。 ASCIIがCASEまたはIF文より少し少ないコードで、文字が数字かどうかを判断するために使用できます。しかしPATINDEXはより良い賭けのように見える。 –

関連する問題