SourceIDという名前のテーブルが1つあります。すべてのレコードにはたくさんの '|'最後のパイプの後の日付は、4つの異なる形式で表示されます。この日付を1つの形式で更新しようとしています。データは次のようになります。文字を検索し、日付形式を更新するために部分文字列を使用する方法?
SourceID
ARS|1C47|13.2|2017-09-29
mm|M8|160|030|ZX7|Sep 29 2017 12:00AM
TMP_Schedule | Int | MG100 | 20370429
TS|01|0|USD|I|S|ZDER|10/31/2017
Iは、DD/MM/YYYYのようなソースIDと一つの標準化さ日付形式からのすべてのデータと同じテーブルに、別のフィールド(SourceID_Revised)を更新するコードを思い付くことを試みました。私はいくつかの異なるアイデアを試してみましたが、これは思いついたことですが、もちろんそれはうまくいきません。
UPDATE TBL_HIST
SET SourceID_Revised = SourceID
WHERE (SELECT CONVERT(VARCHAR(8), SUBSTRING([SourceID],select dbo.LastIndexOf('|', [SourceID]),99)) AS [DD/MM/YYYY]
FROM [dbo].[TBL_HIST]
これを使用して最後のパイプを検索します。私は、SQL Server上で2008
UPDATEよ
FUNCTION [dbo].[LastIndexOf] (@stringToFind varchar(max), @stringToSearch varchar(max))
RETURNS INT
AS
BEGIN
RETURN (LEN(@stringToSearch) - CHARINDEX(@stringToFind,REVERSE(@stringToSearch))) + 1
END
:
ジョン、私はこの仕事ができると思います!それは約5秒間実行され、次に外に出る。私はこのメッセージを受け取ります。
メッセージレベル241、状態1、行1 文字列から日付および/または時刻を変換するときに変換に失敗しました。
私は、そのフィールドの一部のレコードに日付のようなものが全くないために推測しています。だからこのようなことがある:
40285
3467868
私はエラーが発生していると思います。どうすればそれらをスキップすることができますか、またはOn Error Resume Nextのようなものをやりますか?
私が気づいたもう1つのことは、数百のレコードがこのフォーマットを持つことです。これらについては
101.002.112020-06-30
102.0012.102019-09-30
125.02.022022-06-30
、私は、最後のドットを見つける右へに移動し、
MM/DD/YYYY:
06/30/2020
09/30/2019
06/30/2022
ませDD/MM/YYを取得したいです!