Share via


Atomization (XQuery)

Atomization yazılı değerini ayıklanması işlemi olan bir öğe.Bu işlem, belirli koşullar altında de kullanılmış olur.XQuery İşletmenleri, aritmetik ve karşılaştırma işleçleri gibi bazıları, bu işlemde bağlıdır.Aritmetik işleçler doğrudan düğümlerine Uygula gibi yazılı değerinin bir düğüm ilk örtülü olarak çağırarak alınır veri işlev.Bu Atomik değeri için aritmetik işleç işlenen geçirir.

Örneğin, aşağıdaki sorgu toplam LaborHours öznitelikleri döndürür.Bu durum, data() dolaylı olarak uygulanan öznitelik düğümleri.

declare @x xml
set @x='<ROOT><Location LID="1" SetupTime="1.1" LaborHours="3.3" />
<Location LID="2" SetupTime="1.0" LaborHours="5" />
<Location LID="3" SetupTime="2.1" LaborHours="4" />
</ROOT>'
-- data() implicitly applied to the attribute node sequence.
SELECT @x.query('sum(/ROOT/Location/@LaborHours)')

Gereklilik olmasa da açıkça belirtebilirsiniz data() işlev:

SELECT @x.query('sum(data(ROOT/Location/@LaborHours))')

Aritmetik işleçler kullandığınızda örtülü atomization için başka bir örnektir.The + operator requires atomic values, and data() is implicitly applied to retrieve the atomic value of the LaborHours attribute.Sorgu karşı yönergeleri sütun belirtilen xml türü ProductModel tablo.Aşağıdaki sorgu, üç kez LaborHours öznitelik döndürür.Sorguda, aşağıdakilere dikkat edin:

  • OrignialLaborHours öznitelik oluştururken, atomization örtülü olarak tarafından döndürülen tek sıra uygulanır ($WC/@LaborHours).Yazılı değeri LaborHours öznitelik OrignialLaborHours için atanır.

  • UpdatedLaborHoursV1 öznitelik oluştururken, Atomik değerlerin aritmetik işleç gerektirir.Bu nedenle, data() tarafından döndürülen LaborHours öznitelik için örtülü olarak uygulanır ($WC/@LaborHours).Atomik değeri 1, daha sonra kendisine eklenir.İşlem, öznitelik UpdatedLaborHoursV2 gösterir açık uygulama data(), ancak gerekli değildir.

SELECT Instructions.query('
     declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
for $WC in /AWMI:root/AWMI:Location[1]
        return
            <WC OriginalLaborHours = "{ $WC/@LaborHours }"
                UpdatedLaborHoursV1 = "{ $WC/@LaborHours + 1 }" 
                UpdatedLaborHoursV2 = "{ data($WC/@LaborHours) + 1 }" >
            </WC>') as Result
FROM Production.ProductModel
where ProductModelID=7

Bu sonucu verir:

<WC OriginalLaborHours="2.5" 
    UpdatedLaborHoursV1="3.5" 
    UpdatedLaborHoursV2="3.5" />

Atomization bir basit tür, boş bir örneğini sonuçlarını küme, ya da statik türde hata.

Atomization Karşılaştırmada da oluşur ifade İşlevler, işlevleri tarafından döndürülen değerleri geçirilen parametreleri cast() ifades ve sipariş ifades geçirilen sırayla yan tümce tümce.