2008-12-11 18 views
5

क्या स्ट्रिंग फ़ील्ड में हाइफ़न को अनदेखा करते समय आसानी से SQL Server 2005 में सॉर्ट करने का कोई तरीका है? वर्तमान में मुझे एक प्रतिस्थापन (फ़ील्डनाम, '-', '' ') या सॉर्ट क्लॉज में हाइफ़न को निकालने के लिए एक फ़ंक्शन करना है। मैं उम्मीद कर रहा था कि एक ध्वज था जिसे मैं संग्रहित प्रक्रिया या कुछ के शीर्ष पर सेट कर सकता था।एसक्यूएल सॉर्टिंग और हाइफ़न

प्रवेश और GridView डिफ़ॉल्ट छंटाई तार में hypen अनदेखी करने के लिए लगता है।

उत्तर

15

मैं भी ठीक वैसे ही जैसे कुछ नया सीखा है,

मेरा मानना ​​है कि अंतर एक के बीच "स्ट्रिंग क्रमबद्ध" बनाम एक "वर्ड क्रमबद्ध" है के बीच

नमूना अंतर (हाइफन पर ध्यान नहीं देता) वर्ड प्रकार और STRING तरह http://andrusdevelopment.blogspot.com/2007/10/string-sort-vs-word-sort-in-net.html

माइक्रोसॉफ्ट से http://support.microsoft.com/kb/322112

उदाहरण के लिए, आप एसक्यूएल उपयोग कर रहे हैं मिलान "SQL_Latin1_General_CP1_CI_AS", गैर यूनिकोड स्ट्रिंग 'एसी' स्ट्रिंग 'अब' से भी कम है क्योंकि हाइफन ("-") के रूप में क्रमबद्ध हो जाता है एक अलग चरित्र जो "बी" से पहले आता है। हालांकि, अगर आप यूनिकोड के लिए इन तार बदलने और आप एक ही तुलना करते हैं, यूनिकोड स्ट्रिंग N'a-सी क्योंकि यूनिकोड छँटाई नियम एक "शब्द का उपयोग ' N'ab से बड़ा माना जाता है' सॉर्ट करें "जो हाइफ़न को अनदेखा करता है।

मैं कुछ नमूना कोड आप भी खोजने के लिए मुक़ाबला साथ खेल सकते हैं अपने छँटाई

DECLARE @test TABLE 
(string VARCHAR(50)) 

INSERT INTO @test SELECT 'co-op' 
INSERT INTO @test SELECT 'co op' 
INSERT INTO @test SELECT 'co_op' 

SELECT * FROM @test ORDER BY string --COLLATE SQL_Latin1_General_Cp1_CI_AS 
--co op 
--co-op 
--co_op 

SELECT * FROM @test ORDER BY CAST(string AS NVARCHAR(50)) --COLLATE SQL_Latin1_General_Cp1_CI_AS 
--co op 
--co_op 
--co-op 
+0

के साथ काम करने की थी महान काम किया है, धन्यवाद! – tidge

संबंधित मुद्दे