के बजाय की गणना क्या अंतिम नाम हर बार जब आप क्वेरी चलाना चाहते है, तो आप एक गणना स्तंभ है कि एक स्तंभ में वास्तविक मूल्य बनी रहती है हो सकता है कर सकते हैं किसी भी अन्य कॉलम के रूप में इस्तेमाल किया जाना चाहिए।
ALTER TABLE Customer
ADD LastName AS
RIGHT(FullName, CHARINDEX(' ', REVERSE(FullName)) - 1) PERSISTED
यह आपके ग्राहक तालिका में कॉलम अंतिम नाम जोड़ता समारोह अंतिम नाम के मान की गणना करने के लिए निर्दिष्ट है, और यह भंडार शारीरिक मेज पर उपयोग करता है। अंत में मौजूद कीवर्ड को डिस्क पर सहेजने के लिए आवश्यक है, अन्यथा प्रत्येक बार क्वेरी चलने पर गणना की जाएगी।
संपादित करें: को रिक्तियों के मूल्यों के साथ सौदा करने के लिए:
ALTER TABLE Customer
ADD LastName AS
case when CHARINDEX(' ', REVERSE(FullName)) > 0
then RIGHT(FullName, CHARINDEX(' ', REVERSE(FullName)) - 1)
else
FullName
end
PERSISTED
हालांकि आप के रूप में आप यह निर्धारित करने के क्या इस मामले में क्या होता होगा इस समारोह के साथ बेला कर सकते हैं। मेरा मुद्दा यह दिखाने के लिए है कि केस स्टेटमेंट का इस्तेमाल किया जा सकता है। टाइप मिस्चैच से बचने के लिए आप सभी आउटपुट पथों को एक ही प्रकार में डालना भी चाह सकते हैं।
स्रोत
2010-06-16 14:20:59
अंतिम नाम परिभाषित करें। मेरा नाम "रॉबर्ट हेनरी स्मिथ" है। –
@ डोमिनिक: संभवतः यह एक अंतरिक्ष चरित्र का अनुसरण करने वाला अंतिम शब्द होना चाहिए। बेशक, अपवाद होंगे, लेकिन शायद यह ज्यादातर नामों के लिए काम करेगा। – FrustratedWithFormsDesigner
मैंने इस प्रश्न में स्पष्ट किया है। – GateKiller