-3

XQuery ステートメントでsubstringと関数を一緒に使用しようとしています。concat

ここに私が持っているものがあります:

fn:concat(fn:substring({data($x/DueDate)},1,4),fn:substring({data($x/DueDate)},6,2),fn:substring({data($x/(DueDate))},9,2))

私の xml の DueDate の値は次のとおり2013-06-27です。

上記の関数が返されることを期待していました: 20130704.

代わりに、これは私が得るものです:

fn:concat(fn:substring(2013-06-27,1,4),fn:substring(2013-06-27,6,2),fn:substring(2013-06-27,9,2))

なぜだか迷ってます!

4

3 に答える 3

3

要素内で使用する場合は、式を次のように中括弧で囲む必要があります。

{ 
 fn:concat(
   fn:substring(data($x/DueDate), 1, 4),
   fn:substring(data($x/DueDate), 6, 2),
   fn:substring(data($x/DueDate), 9, 2)
 )
}
于 2013-01-17T14:03:10.847 に答える
0

書式設定と括弧をクリーンアップすると (不要な中括弧を削除し、括弧をいくつか削除します)、有効なコードが得られます。

fn:concat(
  fn:substring(data($x/DueDate), 1, 4),
  fn:substring(data($x/DueDate), 6, 2),
  fn:substring(data($x/DueDate), 9, 2)
)

はるかに短くて読みやすいバージョンもあります。

fn:string-join(fn:tokenize($x/DueDate, '-'))

または、正規表現を使用して置き換えることもできます:

fn:replace($x/DueDate, '-', '')
于 2013-01-17T12:36:26.450 に答える
0

あなたの DueDate 値が実際に であると確信しています2013-06-27か? 部分文字列への個々の呼び出しが等しいものは次のとおりです。

substring('2013-06-27',1,4)

=>2013

fn:substring('2013-06-27',6,2)

=>06

fn:substring('2013-06-27',9,2)

=> 27

substring()2 番目のパラメーターで渡された 1 インデックスの文字番号から開始し、3 番目のパラメーターで渡された文字数をコピーします。

于 2013-01-17T03:14:06.333 に答える