1

私は私の人生のために、私がここで間違っていることを一体何をしているのか理解することはできません。

Active DirectoryからSQLサーバーデータベースに名前をプルするクエリを実行すると、出力は次のようになります。

CN=Jackson\, Andrew,OU=Information Technology,OU=Departments,DC=MO,DC=canton,DC=MA,DC=us.

私がやりたいのは、出力が次のようになるように、すべてをトリップすることです。

Jackson, Andrew

次のコードは私を失敗させています。REPLACEには3つの引数が必要だと私に言い続けています。

私はそれを理解できないようです。

REPLACE(LEFT(manager,charindex('','',manager)-1),''CN='','''') as Manager
4

4 に答える 4

4
REPLACE(SUBSTRING(<query output>,4,CHARINDEX(',OU=',<query output>) - 4),'\','')

このソリューションは、データについて多くの仮定を行いますが、うまくいく可能性があります。

于 2013-02-15T18:22:48.890 に答える
2

既存のクエリの問題に関しては、すべての二重引用符は単一引用符である必要があるようです。

select REPLACE(LEFT(manager,charindex(',',manager)-1),'CN=','') as Manager
于 2013-02-15T18:20:25.890 に答える
0

\,文字列に表示される可能性が低い文字または文字の組み合わせに置き換えてから、分割して,から、特殊文字/組み合わせを,:に変換します。

REPLACE(
  REPLACE(
    LEFT(
      REPLACE(manager, ''\,'', CHAR(127)),
      charindex('','',REPLACE(manager, ''\,'', CHAR(127)))-1),
    ''CN='',
    ''''
  )
  , CHAR(127), '','') as Manager

SQLフィドルデモ

于 2013-02-15T18:35:30.453 に答える
0

マークがコメントに書いたように、あなたの質問をするより良い方法があるかもしれません。私はADの経験がないので、そこには行きません。

とはいえREPLACE、問題は''CN=''。それらは一重引用符ではありませんか?言い換えれば、それはであるはずです'CN='

于 2013-02-15T18:15:25.553 に答える