سؤال

ولقد اكتشفت وظيفة PARSENAME كخيار جيد لأجل عنوان بروتوكول الإنترنت تخزينها في قاعدة البيانات. هنا هناك مثال على ذلك.
بلدي المسألة هي أنني أستخدم السبات مع الاستعلامات وردت أسماؤهم في ملف تعيين أكس واني اسعى الى تجنب استخدام

session.createSQLQuery(..) 

وظيفة.
أنا أتساءل إذا وجدت أي وظيفة أي ما يعادل PARSENAME للاستعلامات HQL. إنني أبحث عن ذلك، ولا يمكن العثور على أي شيء.
شكرا جزيلا.

هل كانت مفيدة؟

المحلول

ولم أجد أي شيء ذات الصلة.
أخيرا وتنفيذ ORDER BY التالية شرط أن تأمر عناوين IP بطريقة رقمية (لقد وجدت الحل <لأ href = "http://dev.mysql.com/doc/refman/5.0/en/string-functions.html# function_locate "يختلط =" نوفولو noreferrer "> هنا ):

order by cast(substring(host.ip, 1, locate('.', host.ip) - 1) as integer),
                 cast(substring(host.ip, locate('.', host.ip) + 1, locate('.', host.ip, locate('.', host.ip) + 1) - locate('.', host.ip) - 1) as integer),
                 cast(substring(host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1, locate('.', host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1) - locate('.', host.ip, locate('.', host.ip) +  1) - 1) as integer),
                 cast(substring(host.ip, locate('.', host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1) + 1, 3) as integer)    

نصائح أخرى

وفئة فرعية لهجة الخاص بك واستخدام RegisterFunction() لجعل PARSENAME متاحة على الاستفسارات HQL. RegisterFunction لم يتم توثيقها بشكل جيد جدا ولكن هناك الكثير من الأمثلة على شبكة الإنترنت . أنا لست متأكد من أنك يمكن استخدامه ل<م> النظام النتائج بالرغم من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top