sql >> データベース >  >> RDS >> Sqlserver

ストアドプロシージャを使用してSQLServer2008で文字列を分割し、データをテーブルに挿入する方法

    一般に、正規表現またはSQLテーブル値関数によって文字列を分割するCLR関数を作成することをお勧めしますが、その場合は、文字列をxmlに変換して解析するなどの簡単な方法を試すことができます。

    declare @str nvarchar(max) = 'date=10/10/2000|age=13^date=01/01/2001|age=12^date=02/02/2005|age=8'
    declare @data xml
    
    select @str = replace(@str, '=', '="')
    select @str = replace(@str, '|', '" ')
    select @str = replace(@str, '^', '"/><row ')
    select @str = '<row ' + @str + '"/>'
    
    select @data = cast(@str as xml)
    
    select
        t.c.value('@date', 'nvarchar(max)') as [date],
        t.c.value('@age', 'nvarchar(max)') as [age]
    from @data.nodes('row') as t(c)
    

    sqlフィドルデモ



    1. Laravel 5:整合性制約違反:1452子行を追加または更新できません:外部キー制約が失敗します

    2. SQLServerでマスターデータベースを簡単に再構築する方法

    3. UTF-8/RPostgreSQLを使用したUnicodeテキストエンコーディング

    4. foreachループのPDO::bindParam、すべての値が同じように設定されていますか?