次のクエリがあります。
select subclasses.id,participants_subclasses.participant_id
from subclasses
left outer join participants_subclasses on
participants_subclasses.participant_id = ?
and subclasses.id = participants_subclasses.subclass_id
where
subclasses.classification_id = ?
and subclasses.showhover
order by subclasses.seq,
IF(LEFT(subclasses.code, 1) = '<',
Extractvalue(subclasses.code, "//texts/text/content"),
subclasses.code)
上記のクエリは、コード列にテキストが含まれることもあれば、タグ内にテキストを含む XML が含まれることもあるテーブルを処理しています。上記のクエリは機能します。副作用として、コード値を「<」で開始することはできますが、これは受け入れられるはずですが、順序によって XML コンテンツと間違えられてしまいます。以下のクエリは、より具体的で正確です。
select subclasses.id,participants_subclasses.participant_id
from subclasses
left outer join participants_subclasses on
participants_subclasses.participant_id = ?
and subclasses.id = participants_subclasses.subclass_id
where
subclasses.classification_id = ?
and subclasses.showhover
order by subclasses.seq,
IF(LEFT(subclasses.code, 5) = '<?xml',
Extractvalue(subclasses.code, "//texts/text/content"),
subclasses.code)
ただし、コンテンツ内の XML ヘッダーをチェックするこのバリエーションは、「NameInput Array does not match ?」で失敗します。MySQLのエラー。? 内部<?xml
リテラルがバインド ターゲットと間違われています。そして、バインドする2つの値を渡しています-これも正しいです。
だから私の質問は -<?xml
リテラルをバインド値ターゲットと間違えないようにするにはどうすればよいですか?