2012-12-14 21 views
5

SQLath içinde "in" operatörü olarak işlev gören bir kullanıcı var mı? XPath'ınXPath "in" işleci

select * from tbl_students where id in (1,2,3) 

cevap

13

= operatörü XPath 1.0 dizileri yazmak için sözdizimi bulunmasa da 1,0 eserler bu şekilde. Formun

<doc> 
    <value>1</value> 
    <value>2</value> 
    <value>3</value> 
</doc> 

bir XML belgesi var ise o zaman //doc[value = 2] gibi bir ifade olduğunu doc eleman dönecektir.

XPath 2.0'da, (1, 2, 3) sözdizimi üç tamsayı bir dizi oluşturacaktır ve $i = (1, 2, 3) gibi koşulları yazabilirsiniz. Ancak, değişmez diziler, XPath 1.0'ın bir özelliği değildir; bir XPath ifadesinin bir tarafında birden çok değer elde etmenin tek yolu, birden fazla düğümle eşleşen bir yol ifadesi kullanmaktır.

+0

+1 gibi bir şey. –

4

Aynı problem vardı, yukarıdaki cevap doğru. Böyle bir şey olacaktır XPath içinde, daha net yapmak için: arama 'id' dizisi ise

select * from documents where documenttype in ('newsletter','magazine') 
1

öğrenmek için:

//*:document[*:documentType=("magazine","newspaper")] 

wich equivalant olurdu (1, 2, 3, 4) index-of() bir seçim olabilir. Endekslerin listesini döndürdüğüne dikkat edin. Bir belge kısmı için

gibi
<student id='1'/> 
<student id='101'/> 
<student id='1001'/> 

Seç olacak kesin bir cevap için

//*[not(empty(index-of((1, 2, 3, 4), @id)))]