5 Eylül 2009 Cumartesi

"Argument data type xml is invalid for argument 1 of like function"

HATA MESAJI:
"Argument data type xml is invalid for argument 1 of like function"

AÇIKLAMA:
XML bir alanda LIKE operatörünü kullanarak bir sorgu çalıştırdığınızda böyle bir hata ile karşılaşabilirsiniz.

ÇÖZÜM:
Örneğin "KategoriID INT", "YayinEvi NVARCHAR(70)", "Kitap XML" gibi alanları olan "Kitaplar" adlı bir tablonuz olduğunu varsayalım. Bu tablodaki Kitap isimli alanda LIKE operatörünü kullanarak, aşağıdaki gibi bir sorgu çalıştırırsanız:

SELECT KategoriID, YayinEvi FROM Kitaplar WHERE Kitap LIKE '%lay lay lom%'

O zaman bu hata ile karşılaşırsınız, çünkü XML alanını doğrudan LIKE operatörü ile sorgulayamazsınız. Böyle bir sorgunun çalışması için XML alanını NVARCHAR' a dönüştürebilirsiniz:

SELECT KategoriID, YayinEvi FROM Kitaplar WHERE (CAST(Kitap AS NVARCHAR(MAX)) LIKE '%lay lay lom%'

Hiç yorum yok: