2016-05-30 5 views
0

SQL Serverに基づくcrmデータベースの監査レコードを解析する必要があります。監査は次のようになります。SQL Serverのテキストを解析する方法(Excelから)

'1〜240000.0000〜37758.4100〜05/18/2016 10:59:00〜トランザクション処理、424160c2-b401-e211-a11d-5ef3fcdaf1b7 ~~'のようになります。

区切り文字は「〜」の文字です。上の例では、ここに格納されている4番目のデータであるdatetime 05/18/2016 10:59:00を抽出します。位置は変わることがあります。

私はcharindexを使用しようとしましたが、検索された文字列の出現番号を受け付けません。 sql関数を使用することはできません.SQLコードをExcelから呼び出すため、関数を定義することはできません。 Excel/VBAのルートを取っている場合は、あなたの助けを事前に

おかげ

+0

私は助言することを躊躇していますが、すべての部分で 'TRY_CONVERT'を使用することができます。変換できる部分は日付であり、他の部分はすべてNULLです。もちろん、それは最初にすべての部分を抽出することを意味するでしょう... – HoneyBadger

答えて

0

は、これがうまく動作するはずです:

Sub DateTimeFromString() 

Dim i As Long 
Dim strSQL As String 
Dim varArray As Variant 

strSQL = "1~240000.0000~37758.4100~05/18/2016 10:59:00~transactioncurrency,424160c2-b401-e211-a11d-5ef3fcdaf1b7~~~" 
varArray = Split(strSQL, "~") 
For i = LBound(varArray) To UBound(varArray) 
    If IsDate(varArray(i)) Then 
     MsgBox varArray(i) 
    End If 
Next i 

End Sub 

は、ご質問や問題があるなら、私に教えてください。

+0

それをExcelで行うことは良い解決策になります。抽出に依存するSQLには他にもたくさんのことがあります。私はSQLの文字列1の最初の部分を抽出しましたが、私の抽出が十分に行かない場合が常にあります。私は、抽出する必要のあるアイテムを知っているので、charindexよりも強力な文字列関数が存在することを期待していましたが、入れ子にされた抽出のためには余りにも遠すぎることがあります。とにかくありがとうございました。Ralph – user2410973

+0

あなたのタイトルの中の '(Excelから)'が私を捨てたと思います。しかし、今はExcelが実際にあなたが達成したいとは無関係で、質問から削除する必要があるようです。実際、文字列をテーブルに変換するには単純なUDFが必要ですし、上のコメントのように 'TRY_CONVERT'を使うことができます。あなたが探しているUDFは以前何度も尋ねられており、数え切れないほどの味があります:http://stackoverflow.com/questions/15585632/how-to-convert-comma-separated-nvarchar-to-table- records-in-sql-server-2005 – Ralph

関連する問題