2017-05-03 1 views
-1

先行ゼロを取り除き、数値ではないすべての文字を取る選択クエリを作成しようとしています。私はどちらか一方を同時に行うのではなく、両方を行う方法を考え出した。SQL LEFTとpatindex

これまでのところ、私が持っている:

SELECT 
    Substring(rt_VehicleName, patindex('%[^0]%', rt_VehicleName), +4), 
    [rt_Odometer], 
    [rt_CumHours], 
    [Date], 
    [Emco] 

FROM 
    [GPS_Data].[dbo].[Engine_Hours] 

、結果は28 Sである私は、このクエリはovercomplicatedが、それは私のデータで動作するようですS

+2

グレート!あなたはSQLを学んでいるようです。質問がある場合は、質問のサイトのガイドラインに従ってください。 –

+0

LEFT()とPATINDEX()のクエリには何がありますか?質問を編集して既に得たものを表示すると、それらを組み合わせる方が簡単です。 –

+0

SELECTサブストリング(rt_VehicleName、PATINDEX( '%の[^ 0]%'、rt_VehicleName)、+ 4) 、[rt_Odometer] 、[rt_CumHours] 、[日付] 、[EMCO] [GPS_Data] FROM 。[ dbo]。[Engine_Hours]結果は28 Sです。私はSを取り除きたい –

答えて

0

を取り除きたいです。

select top 10 SUBSTRING(LEFT(SUBSTRING([Your Column Here], PATINDEX('%[0-9.-]%', [Your Column Here]), 8000), PATINDEX('%[^0-9.-]%', SUBSTRING([Your Column Here], PATINDEX('%[0-9.-]%', [Your Column Here]), 8000) + 'X') -1), PATINDEX('%[^0]%', [Your Column Here]+'.'), LEN([Your Column Here])) as 'No 0s or Letters', * from [Your Table Here] 

enter image description here