0

私はPreferenceテーブルを持っています。そのテーブルにはSection列があります。テーブルの各エントリのSection列には、1 つのスペースで区切られた複数の値が含まれます。これらの値は、オペレーティング システムのパスや設定です。

たとえば、`SELECT * FROM Preference' は次のようなものを返すことができます:

HomeDrive=C:\Windows\ ExternalDrive=D:\ Server=\\server\file\

ドライブはレター パスまたは UNC パスとして入力できることがわかります。難しいのは、これらのエントリのどこにでも設定が存在する可能性があることです。もう一つの例:

HomeDrive=C:\Windows\ UseHD=True ExternalDrive=D:\ Server=\\server\file\ FavoriteFolder=X

これらの値をデフォルトの値セットに設定する必要があります。

HomeDrive=\\myserver\home ExternalDrive=\\myserver\backup Server=\\myserver\public

また、このエントリのすべての追加設定をそのままにしておく必要があるため、エントリ全体を 3 セットのパスに変更することはできません。

次のようなものを使用すると思います。

UPDATE Preference
SET Preference= CAST(REPLACE(CAST(Preference AS VARCHAR(MAX)), 'HomeDrive=\\?????\', 'HomeDrive=\\myserver\home') AS TEXT)

元のドライブ パスは動的であるため ('?????' はクエリ内のどこにあるのか)、どうすればよいかわかりません。各パスに関する唯一の決定的なことは次のとおりです。

  • レター ドライブまたは UNC のいずれかになります。
  • パスは常にで終わります\
  • 次の値とはスペースで区切ります

ただし、ドライブ パスには任意の数のスペースを含めることができるため、スペース区切りが役立つかどうかはわかりません。

ありがとう!

4

1 に答える 1

0

問題の根本は、これらの設定の保存方法にあると思います。リレーショナル データベースは、個別データを列で分離するため、これらの各設定は次のいずれかにする必要があります。

  • 独自の別の列を持つ
  • 設定値ペアとして別のテーブルに表示されます

この情報はどのようにしてデータベースに保存されたのでしょうか? さらに重要なことに、挿入するに分離できSectionますか?

値を分離するために、この分割関数を確認することもできます。

于 2012-05-23T16:41:38.547 に答える